47. Nio (modelo Io (multiplexación))

Nio (modelo Io (multiplexación))

Multiplexación, donde la selección está bloqueada y luego los datos se copian después del evento de lectura (también bloqueado)

 

Comparación de multiplexación y bloqueo de E/S

  1. bloqueando yo

Imagine un escenario en el que tenemos varios canales, el canal 1 y el canal 2, si tenemos un solo subproceso en un bucle para procesar solicitudes de varios canales (se lee el canal 1, se acepta el evento ch2). Después de que el canal 1 envíe datos y active el evento de lectura, el canal 2 se conecta al evento, pero en este momento, si 1 vuelve a leer, entonces no funcionará. El evento de aceptación anterior de 2 no ha completado la devolución (solo después de que 2 establece el conexión y retornos) 1 puedo percibir la lectura, leerla de nuevo.

 

Bloqueo de io: cuando un canal está esperando una conexión de evento, otros canales no pueden realizar operaciones de lectura. (Cuando una persona está haciendo una cosa, los demás no pueden hacerlo)

  1. Multiplexación (inicialmente un solo hilo más selector)

 

Después de bloquear la selección (esperando eventos), se devuelven un montón de eventos (en lugar de bloquear un evento a la vez) y luego dejar que los procese todos en el ciclo siguiente. Por lo tanto, no tiene que esperar la conexión y los datos al frente (seleccionar ya está esperando que se complete el evento, solo necesitamos ejecutarlo inmediatamente después de seleccionar (no es necesario esperar)). Hacemos toda la espera mientras se espera el evento. (Si es de subproceso único, aunque se devuelve un lote de eventos y se procesa en un bucle, todavía se procesa uno por uno al procesar, y bloquear uno también se bloqueará más tarde, por lo que agregamos varios subprocesos para procesar eventos por separado)

! ! ! Entiéndelo así, bloquear io es esperar eventos específicos antes de ejecutar (inmediatamente) (la ejecución toma tiempo), y multiplexar es ejecutar eventos después (no inmediatamente) (hay una copia Ir a la colección y luego ir a la colección operación de evento transversal), va a recorrer la colección previamente copiada para obtener el evento que desea y luego procesarlo. (Nos toma tiempo copiar. En este momento, el evento vuelve a aparecer, por lo que lo copiará nuevamente. Luego, recorrerá (iterador) la colección de copias para ejecutar)

Supongo que te gusta

Origin blog.csdn.net/logtcm4/article/details/127851413
Recomendado
Clasificación