Je comprends qu'ils fonctionnent d'une certaine manière distincte de faire un fil par utilisateur. Comment cela fonctionne-t-il exactement?comment tordu/tornade et cetera fonctionnent
(? De non-blocage "a quelque chose à voir avec elle)
Je comprends qu'ils fonctionnent d'une certaine manière distincte de faire un fil par utilisateur. Comment cela fonctionne-t-il exactement?comment tordu/tornade et cetera fonctionnent
(? De non-blocage "a quelque chose à voir avec elle)
De la documentation Twisted:
Le réacteur est au cœur de la boucle d'événements au sein de Twisted - la boucle qui pilote les applications utilisant Twisted. La boucle d'événement est une construction de programmation qui attend et distribue des événements ou des messages dans un programme. Il fonctionne en appelant un "fournisseur d'événements" interne ou externe, qui bloque généralement jusqu'à l'arrivée d'un événement, puis appelle le gestionnaire d'événements approprié ("distribue l'événement"). Le réacteur fournit des interfaces de base à un certain nombre de services, y compris les communications réseau, l'enfilage et l'envoi d'événements.
Voir aussi http://en.wikipedia.org/wiki/Event_loop
non-blocage concerne en ce que si vous voulez gérer les événements plus d'une prise (ou, plus généralement, de plus de deux de tout type de source d'événement) dans un seul thread, vous ne pouvez pas utiliser bloquant opérations pour gérer ces événements. Si vous faites une lecture bloquante sur la première socket, vous ne pourrez pas lire depuis la seconde socket jusqu'à ce que des octets arrivent sur la première. Cela ne fonctionne pas très bien, car vous ne pouvez pas vraiment savoir quelle socket va avoir des octets à lire en premier. Au lieu de cela, vous utilisez quelque chose comme select
(décrit plus en détail sur la page Wikipedia liée ci-dessus) pour vous dire quelle socket a octets, puis les lire à partir de cette socket sans bloquer. Cela signifie que vous pouvez gérer les événements de n'importe quel nombre de sources d'événements, l'un après l'autre, en donnant l'impression de les gérer tous simultanément.
Bien, mais comment fonctionne le blocage non-bloquant dans la boucle d'événements? –
J'ai ajouté un peu plus de texte parlant de blocage vs non-bloquant. –
Jetez un oeil à la classe org.deftserver.web.IOLoop si les choses ne sont toujours pas claires. (www.deftserver.org) – Schildmeijer