未维护:请参阅 celluloid/celluloid#779 - 适用于 Celluloid 行为者的事件化套接字
============== 你不必在线程式和事件式 IO 之间做出选择! Celluloid::IO 提供了基于事件的 IO 系统,可用于构建快速、可扩展的网络应用程序,并可直接与 Celluloid 行为库 集成,从而使线程式和事件式的概念得以轻松结合。 Celluloid::IO 非常适合处理大量主要处于空闲状态的连接的服务器,例如 Websocket 服务器或聊天/消息系统。
Celluloid::IO 提供了一个不同类型的 Actor: 它比标准的 Celluloid Actor 稍慢和稍重一些,但却包含了一个高性能的 Reactor,就像 EventMachine 或 Cool.io 一样。这意味着 Celluloid::IO Actor 既具有 Celluloid Actor 的功能,又具有事件驱动的 I/O 循环的能力。与某些其他事件驱动的 I/O 系统不同,它们只允许每个进程使用一个事件循环,而 Celluloid::IO 允许您根据系统资源的限制创建任意数量的 Actor。
与回调不同,Celluloid::IO 通过 Ruby 自己的 IO 类的鸭子类型 (如 TCPServer 和 TCPSocket) 来提供同步 API。这些类的工作方式与其核心 Ruby 类相同,但在 Celluloid::IO 行为者的范围内,它们提供了"事件化"性能。由于它们是标准类的直接替换,因此无需重写每个库,才能利用 Celluloid::IO 的事件循环,而且您可以在单个连接的整个生命周期内自由切换事件化和阻塞式 IO。
Celluloid::IO 使用 nio4r gem 来监控 IO 对象,该 gem 提供了跨平台和跨 Ruby 实现的访问,可访问高性能系统调用,如 epoll 和 kqueue。
暂无开放 Issues,或尚未同步最近议题。