Aar*_*ken 5 multithreading twisted tornado nonblocking
我知道它们的工作方式与为每个用户制作一个线程有所不同.这究竟是如何工作的?
('非阻塞'是否与它有关?)
来自Twisted文档:
反应堆是Twisted中事件循环的核心 - 循环使用Twisted驱动应用程序.事件循环是一种编程构造,它等待和分派程序中的事件或消息.它的工作原理是调用一些内部或外部"事件提供程序",它通常会阻塞直到事件到达,然后调用相关的事件处理程序("调度事件").该反应器为许多服务提供基本接口,包括网络通信,线程和事件分派.
另见http://en.wikipedia.org/wiki/Event_loop
非阻塞涉及的是,如果要在单个线程中处理多个套接字上的事件(或者更一般地,来自两种以上的任何类型的事件源),则不能使用阻塞操作来处理这些事件.如果在第一个套接字上执行阻塞读取,那么在第一个套接字上的某些字节到达之前,您将无法从第二个套接字读取.这不能很好地工作,因为您无法真正知道哪个套接字将首先读取字节.相反,你使用类似的东西select(在上面链接的维基百科页面上更详细地描述)告诉你哪个套接字有字节,然后从那个套接字读取它们而不阻塞.
这意味着您可以一个接一个地从任意数量的事件源服务事件,同时提供处理它们的外观.
| 归档时间: |
|
| 查看次数: |
593 次 |
| 最近记录: |