Entiendo que funcionan de alguna manera distinta a hacer un hilo por usuario. ¿Cómo funciona eso exactamente?cómo funciona twisted/tornado et cetera
(? ¿El término 'no-bloqueo' tiene algo que ver con ello)
Entiendo que funcionan de alguna manera distinta a hacer un hilo por usuario. ¿Cómo funciona eso exactamente?cómo funciona twisted/tornado et cetera
(? ¿El término 'no-bloqueo' tiene algo que ver con ello)
De la documentación Twisted:
El reactor es el núcleo del bucle de eventos dentro de Twisted - el lazo de los cuales unidades de aplicaciones usando Twisted. El bucle de eventos es una construcción de programación que espera y envía eventos o mensajes en un programa. Funciona llamando a un "proveedor de eventos" interno o externo, que generalmente bloquea hasta que llega un evento, y luego llama al controlador de eventos relevante ("despacha el evento"). El reactor proporciona interfaces básicas para una serie de servicios, incluidas las comunicaciones de red, el enhebrado y el envío de eventos.
Véase también http://en.wikipedia.org/wiki/Event_loop
no bloqueante se refiere, en que si se quiere manejar eventos en más de una toma de corriente (o, más en general, de más de dos de cualquier tipo de fuente de eventos) en un solo hilo, no puede usar bloqueando operaciones para manejar esos eventos. Si realiza una lectura de bloqueo en el primer socket, entonces no podrá leer desde el segundo socket hasta que lleguen algunos bytes al primero. Esto no funciona muy bien, ya que no se puede saber realmente qué socket va a tener bytes para leer primero. En su lugar, utiliza algo como select
(descrito con más detalle en la página de Wikipedia vinculada anteriormente) para decirle qué socket tiene bytes y luego leerlos desde ese socket sin bloquear.
Esto significa que puede realizar el mantenimiento de eventos de cualquier cantidad de orígenes de eventos, uno tras otro, dando la apariencia de manejarlos todos simultáneamente.
Correcto, pero ¿cómo funciona el no bloqueo en el bucle de evento? –
He añadido un poco más de texto sobre el bloqueo vs no bloqueo. –
Eche un vistazo a la clase org.deftserver.web.IOLoop si las cosas aún no están claras. (www.deftserver.org) – Schildmeijer