por Perl user » 2006-08-28 11:01 @500
En realidad select(2) y su implementación en Perl hacen mas qué solo retornarte eso.
La syscall select es una llamada bloqueante la cual te permite "inspeccionar" file descriptors ( en Perl, te permite inspeccionar file handlers ). Ahora siguiente el ejemplo de Perl, una vez teniendo la lista de FH's a inspeccionar, select espera que el kernel le indique que uno de ellos está listo para leer/escribir o con una condición excepcional.
Esta técnica es muy utilizada para servidores de alto rendimiento en conjunto con Threading o Forking servers, puesto que en vez de estar revisando esos FH's manualmente con un poll, el sistema lo hace por tí. Una vez teniendo cual FH vas a atender, normalmente un thread o un proceso diferente, puede manejar la conexiòn hacia él.
Es interesante ver todas las opciones que tienes para hacer I/O sobre streams ( como sockets ), pero una de las mas eficientes en cuanto a la cantidad de conexiones a atender es esta, es decir, la unión de Multiplexed I/O( o sea el uso de select ), y threads o forks.
Saludos,
Marco A. Manzo
[email protected]http://www.unixmonkeys.com/amnesiac/
Perl Programming Language