[boost::asio] асинхронно ждать события в io_service?
От: C0x  
Дата: 30.06.10 11:58
Оценка:
Есть какая-нибудь возможность в boost::asio::io_service посадить async_wait на определенное событие? При этом чтобы можно было это событие активировать из вне (другого потока), и передать через него параметром сообщение. Мне это очень нужно для обмена сообщениями между объектами висящими в разных io_service, которые в свою очередь работают в разных потоках.

Тоесть например, есть два объекта A и B, которые работают в разных io_serviceA и io_serviceB соотвественно. Теперь A хочет передать некую строку объекту B. Представляю это себе както так: в объекте А делаю некий async_wait, ждущий некоторого события с именем eventA, которому передаю хэндлер handle_eventA принимающий параметром строку. Объект B проверяет есть ли хэндлер для eventA в io_serviceA, и если есть то генерирует срабатывание handle_eventA с переданным параметром.

Понимаю что изложил свои мысли сумбурно, но может кто наведет на истинный путь?
Re: [boost::asio] асинхронно ждать события в io_service?
От: Cris Украина  
Дата: 30.06.10 12:03
Оценка:
Здравствуйте, C0x, Вы писали:

C0x>Есть какая-нибудь возможность в boost::asio::io_service посадить async_wait на определенное событие? При этом чтобы можно было это событие активировать из вне (другого потока), и передать через него параметром сообщение. Мне это очень нужно для обмена сообщениями между объектами висящими в разных io_service, которые в свою очередь работают в разных потоках.


C0x>Тоесть например, есть два объекта A и B, которые работают в разных io_serviceA и io_serviceB соотвественно. Теперь A хочет передать некую строку объекту B. Представляю это себе както так: в объекте А делаю некий async_wait, ждущий некоторого события с именем eventA, которому передаю хэндлер handle_eventA принимающий параметром строку. Объект B проверяет есть ли хэндлер для eventA в io_serviceA, и если есть то генерирует срабатывание handle_eventA с переданным параметром.


C0x>Понимаю что изложил свои мысли сумбурно, но может кто наведет на истинный путь?


использую CreateEvent + WaitForSingleObject в ручном режиме, я так делал

инициализируеш евент, переводиш его в состояние "без сигнала"
когда мы заюзаем WaitForSingleObject для этого евента — поток заснет и будет ждать когда евент будет в состоянии "сигнал" — которое вызывается со второго потока
передать параметр — создать глобаный обьект.
поток 1:
евент в "без сигнала" — записать в обьект, евент в "сигнла"
поток 2: "если сигнал" — считать обьект и работаем с ним, иначе ждем
Re: [boost::asio] асинхронно ждать события в io_service?
От: Аноним  
Дата: 30.06.10 15:46
Оценка: +1
Здравствуйте, C0x, Вы писали:
C0x>Понимаю что изложил свои мысли сумбурно, но может кто наведет на истинный путь?

io_service::post
Re[2]: [boost::asio] асинхронно ждать события в io_service?
От: C0x  
Дата: 30.06.10 17:50
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, C0x, Вы писали:

C0x>>Понимаю что изложил свои мысли сумбурно, но может кто наведет на истинный путь?

А>io_service::post


Спасибо вроде то что нужно.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.