6

我有两个进程:一个生产者通过ZMQ以简单的 PULL-PUSH 点对点模式将消息推送给消费者。生产者有几个send()通过 zmq 的内部线程。但是,0MQ 的文档建议不要在线程之间共享套接字

我必须使用单线程发送吗?
假设没有严格要求保持线程之间的发送顺序,那么套接字是单向单工这一事实是否允许多个线程在不引入锁的情况下使用它?

4

1 回答 1

6

最简单的做法是在生产者的每个线程上创建一个单独的 PUSH 套接字,并将connect所有这些套接字连接到消费者中的单个 PULL 套接字。

指南中明确指出 ZeroMQ 套接字必须在单个线程上使用。我想说违反这个要求不是一个好主意,即使它似乎有效:在库的下一个版本或某些特定平台或某些特定负载场景中可能会出现问题。所以,风险太大了。

于 2013-07-15T10:33:37.120 回答