Pregunta

Impulsado por eventos y asincrónico se utilizan a menudo como sinónimos.¿Hay alguna diferencia entre los dos?

Además, ¿cuál es la diferencia entre epoll y aio?¿Cómo encajan?

Por último, he leído muchas veces que AIO en Linux está terriblemente roto.¿Cómo se rompe exactamente?

Gracias.

¿Fue útil?

Solución

Los eventos son uno de los paradigmas para lograr la ejecución asincrónica. Pero no todos los sistemas asincrónicos usan eventos. Eso es sobre el significado semántico de estos dos: uno es la súper entidad de otro.

Epoll y AIO usan diferentes metáforas:

Epoll es una operación de bloqueo (epoll_wait()) - Bloquea el hilo hasta que ocurra algún evento y luego envíe el evento a diferentes procedimientos/funciones/ramas en su código.

En AIO, pasa la dirección de su función de devolución de llamada (rutina de finalización) al sistema y el sistema llama a su función cuando algo sucede.

El problema con AIO es que su código de función de devolución de llamada se ejecuta en el hilo del sistema, etc., en la parte superior de la pila del sistema. Algunos problemas con eso como puedes imaginar.

Otros consejos

Son cosas completamente diferentes.

El paradigma basado en eventos significa que un objeto llamado "evento" se envía al programa cada vez que sucede algo, sin que "algo" tenga que ser encuestado en intervalos regulares para descubrir si ha sucedido. Ese "evento" puede quedar atrapado por el programa para realizar algunas acciones (es decir, un "controlador"), ya sea sincrónico o asincrónico.

Por lo tanto, el manejo de eventos puede ser sincrónico o asincrónico. JavaScript, por ejemplo, utiliza un sistema de eventos sincrónicos.

Asíncrono significa que las acciones pueden ocurrir independientemente de la corriente de ejecución "principal" actual. Eso sí, lo hace NO medio "paralelo" o "hilo diferente". Mientras tanto, una acción "asíncrona" puede ejecutarse en el hilo principal, bloqueando la corriente de ejecución "principal" mientras tanto. Así que no confundas "asíncrono" con "múltiples subprocesos".

Puede decir que, técnicamente hablando, una operación asíncrona automáticamente asumido Eventamiento: al menos los eventos "completados", "con fallas" o "abortados/cancelados" (uno o más de estos) se envían al instigador de la operación (o el O/S subyacente) para indicar que la operación ha cesado . Por lo tanto, Async siempre está impulsado por el evento, pero no al revés.

Impulsado por eventos es un hilo único donde se registran eventos para un escenario determinado.Cuando se afronta ese escenario, los acontecimientos se disparan.Sin embargo incluso en ese momento cada uno de los eventos se dispara de forma secuencial.No tiene nada de asincrónico.Node.js (servidor web) utiliza eventos para manejar múltiples solicitudes.

Asíncrono es básicamente multitarea.Puede generar múltiples subprocesos o procesos para ejecutar una determinada función.Es totalmente diferente del evento impulsado en el sentido de que cada hilo es independiente y apenas interactúa con el hilo principal de una manera fácil de responder.Apache (servidor web) utiliza múltiples subprocesos para manejar las solicitudes entrantes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top