Требуются некоторые пояснения для асинхронных операций и таймеров Boost asio

Есть один аспект таймеров в асинхронных соединениях, который я хочу знать, правильно ли я понимаю.

Предположим, что мы установили таймер перед выполнением операции чтения, который включает в себя обработчик, а затем run () io_service.

Как я понял, io_service завершается, как только менеджер завершает работу после вызова, что может произойти по двум причинам:

a) операция чтения завершена.

b) таймер достиг своего предела .

Предположим, что первое (а) условие было достигнуто, и операция чтения была завершена до того, как таймер закончился.

Возникает вопрос: что происходит с этим таймером? Нам нужно это закончить. Скажите

dTimer_.expires_from_now (boost::posix_time::seconds(0));

after the io_service.run()?

Можете ли вы сбросить его на новый интервал, если необходимо, повторно использовать тот же объект таймера для другой операции чтения?

Могу ли я сбросить () io_service и повторно использовать тот же объект в новом run () для этой новой операции?

5
задан NmdMystery 10 January 2014 в 19:35
поделиться