2010-06-18 63 views
5

据我所知,他们的工作方式与每位用户制作线程截然不同。这个工作到底如何?扭曲/龙卷风等等如何工作

(?是“无堵塞”有什么关系呢)

+0

如果事情还不清楚,请查看org.deftserver.web.IOLoop类。 (www.deftserver.org) – Schildmeijer 2010-10-10 16:07:49

回答

6

从扭曲的文档:

反应器在事件循环内扭曲的核心 - 环路使用Twisted驱动应用程序。事件循环是一个编程构造,它等待并分发程序中的事件或消息。它通过调用一些内部或外部“事件提供者”来工作,该事件提供者通常会阻塞,直到事件到达,然后调用相关事件处理程序(“调度事件”)。反应器为许多服务提供基本接口,包括网络通信,线程和事件分派。

参见http://en.wikipedia.org/wiki/Event_loop

非阻塞涉及,如果你想处理一个以上的插座事件(或更一般地,从两个以上的任何一种事件源的)在单个线程,您不能使用阻止操作来处理这些事件。如果您在第一个套接字上执行了阻塞读取,那么您将无法从第二个套接字读取,直到第一个字节到达某些字节为止。这不太好,因为你不能真正知道哪个套接字首先要读取字节。相反,您可以使用类似select(在上面链接的维基百科页面中更详细地描述)的东西来告诉您哪个套接字有字节,然后从该套接字读取它们而没有阻塞。

这一切都意味着您可以从任意数量的事件源一个接一个地处理事件,给出所有同时处理它们的外观。

+0

对,但事件循环中的非阻塞如何工作? – 2010-06-18 15:43:01

+0

我增加了一些讨论阻塞与非阻塞的文本。 – 2010-06-18 19:09:55