Я использую (однопоточный) a boost::asio:io_service
для обработки множества подключений tcp. Для каждого соединения я использую deadline_timer для улавливания тайм-аутов. Если какое-либо из соединений истечет, я не могу использовать ни один из результатов других соединений. Поэтому я хочу полностью перезагрузить свой io_service. Я думал, что вызов io_service.stop()
позволит «законченным» обработчикам в очереди вызываться и вызовет обработчики в очереди с ошибкой.Очистить boost :: asio :: io_service after stop()
Однако похоже, что обработчики остаются в очереди и поэтому звонят io_service.reset()
, а затем io_service.run()
возвращают старые обработчики. Может ли кто-нибудь подтвердить, что обработчики действительно остаются в очереди даже после вызова io_service.stop()
. И если да, то каковы возможности полного сброса io_service, например. удалить все обработчики в очереди?