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