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

Насколько мне известно, основное различие между синхронными и асинхронными операциями. Т.е. write () или read () vs async_write () и async_read () заключается в том, что первое не возвращается, пока операция finish -or error-, и последние, немедленно возвращается.

Из-за того, что асинхронные операции управляются io_service.run () , которая не завершается, пока не завершатся управляемые операции. Мне кажется, что в последовательных операциях, таких как соединения TCP / IP с такими протоколами, как POP3, в которых операция представляет собой последовательность, например:

 C: <connect>
 S: Ok.
 C: User...
 S: Ok.
 C: Password
 S: Ok.
 C: Command
 S: answer
 C: Command
 S: answer
 ...
 C: bye
 S: <close>

Разница между синхронными / асинхронными операторами не имеет большого смысла.

Конечно, в обеих операциях всегда есть риск, что выполнение программы остановится на неопределенное время по каким-то обстоятельствам - например, из-за использования таймеров-, но я хотел бы знать некоторые более авторитетные мнения по этому поводу.

Я должен признать, что вопрос довольно нечеткий, но я хотел бы услышать несколько советов о том, когда использовать тот или другой. Я столкнулся с проблемами при отладке с помощью MS Visual Studio асинхронных операций SSL в клиенте POP3, над которым я сейчас работаю, и иногда думаю, что, возможно, использовать асинхронность в этом - плохая идея.

19
задан Enigma 7 January 2014 в 16:20
поделиться