zmq:可以用简单的PUSH-PULL模式多个线程PUSH

时间:2013-07-14 12:42:20

标签: multithreading sockets thread-safety zeromq simplex

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

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

1 个答案:

答案 0 :(得分:4)

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

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