реклама на сайте
подробности

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


Любитель
*****

Группа: Свой
Сообщений: 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 после отрабатывания оператора присваивания?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Jan 28 2011, 09:23
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Если не используется ожидание сообщения, то какой смысл в применении сообщения вообще?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jan 28 2011, 11:56
Сообщение #3


Любитель
*****

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



Цитата(Сергей Борщ @ Jan 28 2011, 12:23) *
Если не используется ожидание сообщения, то какой смысл в применении сообщения вообще?

Управление процессом. Передача комманд\ответов управляющему процессу.
Очень удобно, так как формат сообщений произвольный, и может содержать сложную структуру.

Процесс может находиться в двух режимах - idle и working.
В idle висим на ожидании сообщения (команды).
В working применяю поллинг, так как управляющее сообщение имеет низший приоритет, и время реакции на него не критично.

По моему вполне логично.
Go to the top of the page
 
+Quote Post
dxp
сообщение Jan 28 2011, 12:48
Сообщение #4


Adept
******

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



Цитата(sonycman @ Jan 28 2011, 17:56) *
Управление процессом. Передача комманд\ответов управляющему процессу.
Очень удобно, так как формат сообщений произвольный, и может содержать сложную структуру.

Кстати, да, мне вот такая простая мысль в голову не пришла. Действительно, если мы сообщения не ждем, а опрашиваем, то для этого достаточно просто завести просто структуру, которая является телом сообщения, и флажок готовности (можно прямо в теле структуры). И поллить периодически этот флажок. Использование сервисов ОС тут вообще не нужно. Такое решение будет еще эффективнее во всех смыслах.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jan 28 2011, 13:41
Сообщение #5


Любитель
*****

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



Цитата(dxp @ Jan 28 2011, 15:48) *
Кстати, да, мне вот такая простая мысль в голову не пришла. Действительно, если мы сообщения не ждем, а опрашиваем, то для этого достаточно просто завести просто структуру, которая является телом сообщения, и флажок готовности (можно прямо в теле структуры). И поллить периодически этот флажок. Использование сервисов ОС тут вообще не нужно. Такое решение будет еще эффективнее во всех смыслах.

Да, можно сделать общение процессов и не используя ОС.
Если самому позаботиться о синхронизации и совместном доступе.

Но, осваивая свою первую в жизни ОС, всё таки хочется пользоваться её сервисами sm.gif
Go to the top of the page
 
+Quote Post
dxp
сообщение Jan 28 2011, 13:55
Сообщение #6


Adept
******

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



Цитата(sonycman @ Jan 28 2011, 19:41) *
Но, осваивая свою первую в жизни ОС, всё таки хочется пользоваться её сервисами sm.gif

Но пользоваться ими надо в соответствии с их предназначением, и иное использование оказывается нелогичным и неэффективным - как вот вам не понравилось, что оператор-функция не делает того, что вам бы хотелось.

Цитата(sonycman @ Jan 28 2011, 19:41) *
Да, можно сделать общение процессов и не используя ОС.
Если самому позаботиться о синхронизации и совместном доступе.

Без ОС организация поллинга будет совсем не такой простой и не такой эффективной. Тут-то у вас есть отдельный процесс, который по кругу выполняет ряд задач, одна из которых - опрос. Опросил, если есть, работаем, если нет, пошли дальше - то, что вам, как я понял, и надо. Без ОС придется повозиться с организацией как общего потока управления, так и частного кода, осуществляющего поллинг.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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
|- - 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
- - jorikdima   Цитата(dxp @ Jan 29 2011, 09:31) Я все-та...   Feb 1 2011, 14:56
- - dxp   Цитата(jorikdima @ Feb 1 2011, 20:56) Кст...   Feb 2 2011, 03:55


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th August 2025 - 22:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.0147 секунд с 7
ELECTRONIX ©2004-2016