multiple - ¿Qué son los zócalos Async?
sockets ejemplo (3)
¿Qué son los zócalos Async? ¿Cómo son diferentes de los enchufes normales (bloqueo y no bloqueo)?
Cualquier sugerencia en esa dirección o cualquier enlace a tutoriales serán útiles.
Gracias.
Comparación de los siguientes cinco modelos diferentes de E / S en la programación de red UNIX: La API de red de sockets sería útil:
Bloqueo
Sin bloqueo
Multiplexión de E / S
E / S impulsada por señal
E / S asincrónica
Hay tres formas de comunicarse con los sockets de manera asincrónica:
Abra el socket regular, pero no lea de él (porque
read()
bloques) hasta que sepa que hay algo que leer. Puede usarselect()
opoll()
para verificar si hay datos para leer desde el socket (s), y si hay algo, léalo, ya queread()
no se bloqueará.Cambie el socket a E / S sin bloqueo, configurando el indicador
fcntl()
con la funciónfcntl()
. En este caso,read()
no se bloqueará.Establezca el indicador
O_ASYNC
delO_ASYNC
usando la opciónFIOASYNC
deioctl()
(vea elman 7 socket
para más detalles). En este caso, recibirá la señalSIGIO
cuando haya algo que leer en el zócalo.
El tercer enfoque es el socket asíncrono.
Si un servidor usa un socket síncrono, mientras espera datos del cliente, su hilo principal está bloqueado, por lo que el servidor no hará nada ... eso es malo si tiene varios clientes conectados. En un socket asíncrono, PUEDE hacer otras cosas mientras espera que el cliente le envíe datos, por lo que ahora PUEDE tener varios clientes conectados a usted
Synchronous utiliza una función como receive () que bloquea hasta que recibe un mensaje
Asincrónico tiene beginReceive () endReceive () o funciones similares. Utiliza devoluciones de llamada, cuando se recibe un mensaje, se invoca la devolución de llamada