Насколько мне известно, основное различие между синхронными и асинхронными операциями. Т.е. 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, над которым я сейчас работаю, и иногда думаю, что, возможно, использовать асинхронность в этом - плохая идея.