Я хочу обеспечить глобальное io_service
это управляется одним глобальным потоком. Достаточно простой, у меня просто есть вызов тела потока io_service::run()
. Однако это не работает как run
(run_one
, poll
, poll_one
) возвратитесь, если нет никакой работы, чтобы сделать. Но, если поток неоднократно будет называть выполненным (), то он будет занятый цикл, когда там будет не иметь отношения.
Я ищу способ заставить поток блокироваться, в то время как нет никакой работы, которая будет сделана в io_service. Я мог добавить глобальное событие к соединению для потока для блокирования на. Однако это потребовало бы пользователей io_service
для уведомления события каждый раз, они использовали сервис. Не идеальное решение.
Примечание: нет никаких фактических globals, и я никогда не использую события для параллелизма, я просто упростил проблему вниз до моей точной потребности. Реальной целью является a asio::deadline_timer
подкласс, который не требует io_service
как параметр конструкции.
Вам нужно создать объект io_service :: work
.
См. Этот раздел документации: