阻止操作和ZeroMQ

car*_*mst 3 io networking distributed system zeromq

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

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

谢谢!

nos*_*nos 5

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

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

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

  • 这些规则并不是绝对的.请参阅http://api.zeromq.org/zmq_socket.html以及每种套接字类型的特征摘要. (2认同)