令人难以置信的是,ZeroMQ在Windows上使用select(),直到我完成代码并开始性能测试之前我才知道。他们应该在他们的网站上用大红色字体显示这些信息。
无论如何都要替换ZeroMQ的select()?
IOCP是proactor模型,无法轻松集成到它中,WSAEventSelect如何,这也是一个反应堆模型,并且具有接近性能的民意调查。
我的另一个选择是http://nanomsg.org/,但它仍然是alpha。
答案 0 :(得分:0)
Zeromq的主要目标之一是为线程,进程,节点和集群之间的通信提供一致的API。协议特定优化超出了此范围,因为它可以影响其他通信领域。例如,共享内存将是更好的IPC形式,但UNIX域套接字使得一致的API更容易。了解端点何时断开连接也很好,但是如何在线程之间实现这种行为?
他们的主要目标是允许每个模式以相同的方式工作,无论拓扑,协议,系统或语言如何,无论看起来多么奇怪,都可以使用任何混合(node.js Websockets与之通信) C#代理将消息传递给与Java线程共享工作的Ruby和PHP工作者等。)
如果针对每个特定的协议和系统进行优化,它的每个功能都会得到极大的增强,但这也会使统一的模式几乎不可能。
顺便说一句,如果你能找到一种方法来实现iocp,同时仍然保持这种多功能性和中立性,他们可能会接受一个协议。PPS,nanomsg由Zeromq的主要原始开发商之一制作。 Crossroads.IO是Zeromq的直接分支,由原始的Zeromq开发人员组成,包括一些nanomsg开发人员。如果我没弄错的话,Nano可能会在完成时成为十字路口的核心。