Есть какая-нибудь возможность в 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 с переданным параметром.
Понимаю что изложил свои мысли сумбурно, но может кто наведет на истинный путь?
Здравствуйте, 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: "если сигнал" — считать обьект и работаем с ним, иначе ждем
Здравствуйте, C0x, Вы писали:
C0x>Понимаю что изложил свои мысли сумбурно, но может кто наведет на истинный путь?
io_service::post
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, C0x, Вы писали:
C0x>>Понимаю что изложил свои мысли сумбурно, но может кто наведет на истинный путь?
А>io_service::post
Спасибо вроде то что нужно.