Гарантируется ли, что обработчик async_ * в boost :: asio будет вызываться всегда? - PullRequest
2 голосов
/ 03 марта 2012

Я вызываю boost :: asio :: serial_port :: async_write_some () и asio :: io_service :: run () в другом потоке. Существует обратный вызов, переданный async_write_some. Могу ли я с уверенностью предположить, что этот обратный вызов будет в конечном итоге вызван (возможно, с некоторым кодом ошибки)? При каких обстоятельствах это неправда?

Ответы [ 2 ]

4 голосов
/ 03 марта 2012

Могу ли я с уверенностью предположить, что этот обратный вызов будет в конечном итоге вызван (возможно, с некоторым кодом ошибки)?

Я думаю, что нет.

При каких обстоятельствах это неправда?

Метод io_service :: stop вызывается перед отправкой данных.

3 голосов
/ 04 марта 2012

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

...