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

2 multithreading zeromq jzmq

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

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

一段时间后,服务器端在读取线程中收到SIGABRT。

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

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

bob*_*bah 7

https://zguide.zeromq.org/docs/chapter2/#Multithreading-with-ZeroMQ

\n
\n

不要\xe2\x80\x99t 在线程之间共享 ZeroMQ 套接字。ZeroMQ 套接字不是\n线程安全的。从技术上讲,可以将套接字从一个线程迁移到另一个线程,但这需要技巧。在线程之间共享套接字的唯一\xe2\x80\x99s\n远程理智的地方是需要在套接字上执行诸如垃圾收集之类的魔法的语言绑定。

\n
\n