我正在设计一个分布式系统,其中单线程服务器进程执行CPU密集型操作。这些操作由ZeroMQ网络消息触发。
如果单线程进程正在执行CPU密集型工作,那么I / O(ZeroMQ套接字)会阻塞吗?
谢谢!
答案 0 :(得分:5)
如果没有要阅读的消息,您将阻止阅读消息。
如果未完成的消息数量超过ZMQ_HWM,您将阻止发送(默认情况下它没有限制,但是对于您有多少内存存在实际限制),如果消息简单,它似乎取决于套接字类型当达到该限制时,丢弃(在这种情况下你不会阻止)。
如果您不希望在任何情况下阻止,您可以指定标志ZMQ_NOBLOCK - 在这些情况下,zmq_send / zmq_recv将失败而不是阻止。