Hasta donde sé, la principal diferencia entre las operaciones síncronas y asíncronas. Es decir. write()
o read()
frente a async_write()
y async_read()
es que los primeros, no regresan hasta que finalice la operación -o error-, y los últimos, vuelven inmediatamente.Se necesitan algunas aclaraciones sobre las operaciones asio síncronas y asíncronas
Debido a que las operaciones asincrónicas están controladas por un io_service.run()
que no termina hasta que las operaciones controladas hayan finalizado. Me parece que en las operaciones secuenciales como los implicados en las conexiones TCP/IP con protocolos como POP3, en el que la operación es una secuencia tales como:
C: <connect>
S: Ok.
C: User...
S: Ok.
C: Password
S: Ok.
C: Command
S: answer
C: Command
S: answer
...
C: bye
S: <close>
La diferencia entre los operadores síncrono/asíncrono no tiene mucho sentido.
Por supuesto, en ambas operaciones siempre existe el riesgo de que el flujo del programa se detenga indefinidamente por alguna circunstancia -en este caso el uso de temporizadores-, pero me gustaría conocer algunas opiniones más autorizadas en esta materia.
Debo admitir que la pregunta está bastante mal definida, pero me gustaría escuchar algunos consejos sobre cuándo usar una u otra. Me he encontrado con problemas al depurar con MS Visual Studio con respecto a las operaciones de SSL asíncronas en un cliente POP3 en el que ahora estoy trabajando, y algunas veces pienso que quizás sea una mala idea usar asincrono en esto.
+1 Ni siquiera cerca de una pregunta mal definida. La programación asincrónica es difícil, no se avergüence de hacer preguntas al respecto. –