【问题标题】:ZMQ asynchronous, how does it work exactly?ZMQ异步,它究竟是如何工作的?
【发布时间】:2016-02-01 04:31:51
【问题描述】:

我目前正在从事一个需要快速网络管理的项目。为此,我选择了 0MQ,但在阅读了此文档和示例之后。关于 0MQ 的异步部分,我很难理解。

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

我经常错误地将异步和多线程结合起来。当我查看zmqsocket 的人时,我看到对于 DEALER 或 ROUTER 套接字,传入路由设置为“公平排队”。由此我得出结论,异步意味着您可以在套接字上写入或读取,而无需等待发送另一个请求的答案(一切都排队并同步处理)。

所以问题来了,

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

【问题讨论】:

    标签: c++ c multithreading asynchronous zeromq


    【解决方案1】:

    Zeromq 只创建一个线程。没有为请求或套接字创建额外的线程。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-16
      • 2014-04-30
      • 1970-01-01
      • 1970-01-01
      • 2018-09-20
      • 2020-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多