在多线程环境中使用ZMQ的正确方法?

时间:2016-04-30 14:22:46

标签: multithreading zeromq jzmq

我的程序使用ZMQ进行通信。也就是说,服务器(C ++,linux)创建一个XPUB套接字,然后在一个线程中读取它,在另一个线程中发布数据(写入)。

客户端(java,jzmq,linux)创建一个SUB套接字,并使用它进行订阅。

一段时间后,服务器端在阅读主题中收到SIGABRT。

可能是问题的根源?在不同的线程中读/写或创建XPUB / SUB对?

如果问题出在多线程中,那么使用XPUB套接字的正确范例是什么?

1 个答案:

答案 0 :(得分:3)

http://zguide.zeromq.org/page:all#Multithreading-with-ZeroMQ

  

不要在线程之间共享ZeroMQ套接字。 ZeroMQ套接字不是   线程安全的。从技术上讲,可以从一个套接字迁移套接字   线程到另一个,但它需要技巧。它唯一的地方   远程理智,以便在线程之间共享套接字   需要像套接字上的垃圾收集那样做魔术的绑定。