|
Небольшая проблема с обработкой сообщений, сброс флага "Сообщение пусто" |
|
|
|
Jan 26 2011, 19:33
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Доброго времени суток! Организую взаимодействие между двумя процессами с помощью сообщений. Один процесс отправляет сообщение, другой - принимает. Почему то казалось, что после считывания сообщения оператором = его статус автоматически устанавливается на "пусто". Поэтому делал так: CODE //thread 1 command_message.send(); response_message.wait(); ...
//thread 2 if (command_message.is_non_empty()) { message_placeholder = command_message; ... response_message.send(); ... }
Оказалось, что это не так, и необходимо после считывания принудительно сбрасывать сообщение функцией reset(). Но, может быть, удобнее было бы сделать автоматический сброс флага NonEmpty после отрабатывания оператора присваивания?
|
|
|
|
|
 |
Ответов
|
Feb 1 2011, 14:56
|

тут может быть ваша реклама
    
Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280

|
Цитата(dxp @ Jan 29 2011, 09:31)  Я все-таки не понимаю, почему нельзя просто дописать свой код, который нужен. Или функцию, которая делает опрос и сброс, или, если уж так хочется работать непосредственно с объектом, отнаследоваться от message, добавить там свой operator=(), который будет сбрасывать внутренний флаг и выдавать наружу тело сообщения, как штатный оператор. Кстати помните наш диалог про то, что неплохо было бы сделать все (большинство) методов и полей под квалификатором protected а не private, для того, чтоб наследоваться и расширять функционал класса. Вот пример, когда это было бы весьма кстати. А так товарищу формально нужно будет менять код ОС, чтоб иметь возможность отнаследоваться. Цитата(dxp @ Feb 1 2011, 15:02)  Если вас не устраивает такое решение, подождите некоторое время, как сказал Сергей, скоро будет новый релиз, в нем можно создавать пользовательские сервисы (для этого там будет документированный API), вы сможете сделать свою версию сообщения так, как вам нравится. Сорри, не дочитал до конца. Судя по всему в этом направлении есть изменения! Здорово, буду ждать!
|
|
|
|
|
Feb 2 2011, 03:55
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(jorikdima @ Feb 1 2011, 20:56)  Кстати помните наш диалог про то, что неплохо было бы сделать все (большинство) методов и полей под квалификатором protected а не private, для того, чтоб наследоваться и расширять функционал класса. Большинство функций-членов там вообще public. Приватные функции по пальцам можно пересчитать. Цитата(jorikdima @ Feb 1 2011, 20:56)  Вот пример, когда это было бы весьма кстати. А так товарищу формально нужно будет менять код ОС, чтоб иметь возможность отнаследоваться. В данном случае это ничего бы не дало. Все представление, к которому нужен доступ, досягаемо через открытые функции-члены. В этом контексте имело бы смысл делать данные protected, но это как-то уже не совсем хорошо. Основной идеологический посыл в том, что классы сервисов не предназначены для непосредственного расширения. Для расширения будет предоставлен специальный механизм, на основе которого будут реализованы и штaные классы сервисов.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
Сообщений в этой теме
sonycman Небольшая проблема с обработкой сообщений Jan 26 2011, 19:33 dxp Цитата(sonycman @ Jan 27 2011, 01:33) Доб... Jan 27 2011, 04:52 sonycman Цитата(dxp @ Jan 27 2011, 07:52) Таким об... Jan 27 2011, 05:41  dxp Цитата(sonycman @ Jan 27 2011, 11:41) Да,... Jan 27 2011, 08:50   sonycman Цитата(dxp @ Jan 27 2011, 11:50) Мне каже... Jan 27 2011, 11:03    dxp Цитата(sonycman @ Jan 27 2011, 17:03) Ну ... Jan 28 2011, 03:45 Сергей Борщ Если не используется ожидание сообщения, то какой ... Jan 28 2011, 09:23 sonycman Цитата(Сергей Борщ @ Jan 28 2011, 12:23) ... Jan 28 2011, 11:56  dxp Цитата(sonycman @ Jan 28 2011, 17:56) Упр... Jan 28 2011, 12:48   sonycman Цитата(dxp @ Jan 28 2011, 15:48) Кстати, ... Jan 28 2011, 13:41    dxp Цитата(sonycman @ Jan 28 2011, 19:41) Но,... Jan 28 2011, 13:55     sonycman Цитата(dxp @ Jan 28 2011, 16:55) Без ОС п... Jan 28 2011, 14:09      Сергей Борщ QUOTE (sonycman @ Jan 28 2011, 16:09) Тут... Jan 28 2011, 16:01 dxp Я все-таки не понимаю, почему нельзя просто дописа... Jan 29 2011, 06:31 sonycman Мне просто было интересно, почему авторы не предус... Jan 29 2011, 09:15 dxp Цитата(sonycman @ Jan 29 2011, 15:15) Что... Jan 29 2011, 11:36  sonycman Цитата(dxp @ Jan 29 2011, 14:36) Можно по... Jan 29 2011, 15:16   dxp Цитата(sonycman @ Jan 29 2011, 21:16) А я... Jan 31 2011, 08:13    sonycman Цитата(dxp @ Jan 31 2011, 11:13) Upd. Не ... Jan 31 2011, 13:19     dxp Цитата(sonycman @ Jan 31 2011, 19:19) А, ... Jan 31 2011, 14:53      sonycman Цитата(dxp @ Jan 31 2011, 17:53) Секция в... Jan 31 2011, 16:16       dxp Цитата(sonycman @ Jan 31 2011, 22:16) Кон... Feb 1 2011, 03:21        sonycman Цитата(dxp @ Feb 1 2011, 06:21) Я так виж... Feb 1 2011, 08:10         dxp Цитата(sonycman @ Feb 1 2011, 14:10) В ва... Feb 1 2011, 12:02          sonycman Цитата(dxp @ Feb 1 2011, 15:02) ...скоро ... Feb 1 2011, 13:33
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|