GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cuál es la diferencia entre impulsado por eventos y asíncrono? ¿Entre epoll y AIO?

Los eventos son uno de los paradigmas para lograr la ejecución asíncrona. Pero no todos los sistemas asíncronos utilizan eventos. Se trata del significado semántico de estos dos:uno es superentidad del otro.

epoll y aio usan diferentes metáforas:

epoll es una operación de bloqueo (epoll_wait() ):bloquea el hilo hasta que ocurre algún evento y luego envía 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 sucede algo.

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


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 ese "algo" tenga que ser sondeado 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 de forma síncrona o asíncrona.

Por lo tanto, el manejo de eventos puede ser síncrono o asíncrono. JavaScript, por ejemplo, utiliza un sistema de eventos síncronos.

Asíncrono significa que las acciones pueden ocurrir independientemente del flujo de ejecución "principal" actual. Eso sí, NO significa "paralelo" o "hilo diferente". Una acción "asincrónica" puede ejecutarse en el subproceso principal, bloqueando el flujo de ejecución "principal" mientras tanto. Así que no confundas "asincrónico" con "multiproceso".

Puede decir que, técnicamente hablando, una operación asíncrona automáticamente supone eventos:al menos eventos "completados", "fallidos" o "abortados/cancelados" (uno o más de estos) se envían al instigador de la operación (o al propio O/S subyacente) para señalar que la operación ha cesado . Por lo tanto, asíncrono siempre se basa en eventos, pero no al revés.


Impulsado por eventos es un hilo único donde los eventos se registran para un escenario determinado. Cuando se enfrenta ese escenario, los acontecimientos se disparan. Sin embargo, incluso en ese momento, cada uno de los eventos se dispara de manera secuencial. No hay nada asincrónico al respecto. Node.js (servidor web) utiliza eventos para gestionar varias solicitudes.

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


Linux
  1. ¿Cuál es la diferencia entre InnoDB y MyISAM?

  2. ¿Cuál es la diferencia entre Git Switch y Checkout?

  3. ¿Cuál es la diferencia entre insmod y modprobe?

  4. ¿Cuál es la diferencia entre strtok_r y strtok_s en C?

  5. ¿Cuál es la diferencia entre ls y l?

¿Cuál es la diferencia entre Linux y Unix?

¿Cuál es la diferencia entre Shell de inicio de sesión y sin inicio de sesión?

¿Cuál es la diferencia entre el comando apt y apt-get?

¿Qué es un Hipervisor? ¿Cuál es la diferencia entre el tipo 1 y 2?

¿Cuál es la diferencia entre curl y Wget?

¿Cuál es la diferencia entre ruta y ruta ip?