我知道ZMQ
不是线程安全的。
但我想使用一个线程接收数据:zmq_poll()
等待数据来,然后使用zmq_recv()
接收数据;使用另一个线程发送数据:zmq_send()
我想知道这是使用ZMQ
的正确方法吗?
事实上我已经尝试过了。调用zmq_poll()
一次时程序核心转储,但它只发生一次而不能再出现。
答案 0 :(得分:2)
尽管如此,所有ZeroMQ众神和巫师都违背了你的愿望。
如果您确实知道自己打算做什么,以便处理所有多线程歧义,那么您可以自己去尝试。
如果要求这个" 是否是使用ZeroMQ的正确方法?",请不要指望答案违反了所有表达的文档警告不要这样做。
无论如何,享受像ZeroMQ这样的优秀工具,用于设计智能,可扩展,低延迟,高性能的分布式异构系统。
答案 1 :(得分:0)
ZMQ Context是单个进程中所有套接字的容器,当然是线程安全的。 ZMQ套接字不是线程安全的,它们不应在线程之间共享。因此,ZMQ指南建议为每个线程创建一个专用的inproc
套接字。这为您提供了一种非常简单而强大的方法,可以在一个进程中连接线程,而无需复杂的线程同步机制。