3

我正在设计一个分布式系统,其中单线程服务器进程执行 CPU 密集型操作。这些操作由 ZeroMQ 网络消息触发。

如果单线程进程正在执行 CPU 密集型工作,I/O(ZeroMQ 套接字)会阻塞吗?

谢谢!

4

1 回答 1

5

如果没有要阅读的消息,您将阻止阅读消息。

如果未完成消息的数量超过 ZMQ_HWM,您将阻止发送(默认它没有限制,但对于您拥有多少内存有实际限制),如果消息被简单地丢弃,它似乎取决于套接字类型(您在这种情况下不会阻塞)当达到该限制时。

如果您不想在任何情况下阻塞,您可以指定标志 ZMQ_NOBLOCK - zmq_send/zmq_recv 在这些情况下将失败而不是阻塞。

于 2010-09-12T20:26:14.120 回答