ZMQ异步,它是如何工作的?

时间:2015-11-01 00:52:34

标签: c++ c multithreading asynchronous zeromq

我目前正在开展一个需要快速网络管理的项目。为此,我选择了0MQ,但在阅读了本文给出的文档和示例之后。关于0MQ的异步部分,我几乎无法理解。

是否为ROUTER或DEALER套接字上的每个请求创建了任何线程?

我经常犯错误,将异步和多线程结合起来。当我看到zmqsocket的人时,我看到对于经销商或者ROUTER套接字,传入的路由设置在"公平排队"。从此我得出结论异步意味着你可以在套接字上编写或读取而无需等待发送另一个请求的答案(所有内容都排队并同步处理)。

所以这是问题,

0MQ是否有关于每个请求创建的线程? (我不是在讨论0MQ内部用于管理消息队列的后台线程)。

1 个答案:

答案 0 :(得分:4)

Zeromq只创建一个线程。没有为请求或套接字创建其他线程。

后台线程完成所有工作,用户线程使用队列和文件描述符与后台线程进行通信。

后台线程使用epoll或kqueue来执行异步魔术。

您实际上可以控制后台线程的数量,但通常是一个。