специализированный поток для io_service:: выполненный ()

Я хочу обеспечить глобальное io_service это управляется одним глобальным потоком. Достаточно простой, у меня просто есть вызов тела потока io_service::run(). Однако это не работает как run (run_one, poll, poll_one) возвратитесь, если нет никакой работы, чтобы сделать. Но, если поток неоднократно будет называть выполненным (), то он будет занятый цикл, когда там будет не иметь отношения.

Я ищу способ заставить поток блокироваться, в то время как нет никакой работы, которая будет сделана в io_service. Я мог добавить глобальное событие к соединению для потока для блокирования на. Однако это потребовало бы пользователей io_service для уведомления события каждый раз, они использовали сервис. Не идеальное решение.

Примечание: нет никаких фактических globals, и я никогда не использую события для параллелизма, я просто упростил проблему вниз до моей точной потребности. Реальной целью является a asio::deadline_timer подкласс, который не требует io_service как параметр конструкции.

9
задан deft_code 21 December 2009 в 20:51
поделиться