Насколько я знаю, основное различие между синхронными и асинхронными операциями. То есть write()
или read()
vs async_write()
и async_read()
- это то, что первые не возвращаются до завершения операции или ошибки, а последние возвращаются немедленно.
В связи с тем, что асинхронные операции контролируются 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, на котором я сейчас работаю, и иногда думаю, что, возможно, это плохая идея, использующая асинхронную функцию.