我正在使用Request-Reply方案使用ZeroMQ套接字在两台计算机之间交换消息。这种交换是通过带有一些其他功能的C程序完成的。
在响应器计算机停机的情况下,请求者无限期地等待消息,从而阻止了程序的其余功能。这不是我想要的。
我尝试使用:
zmq_recv (requester, buffer, 256, ZMQ_DONTWAIT);
但是请求者立即返回,因为(显然)队列中没有消息。
在ZeroMQ中,有没有办法采用非阻塞的请求-答复方案?类似于:“如果在1秒钟内未收到消息,请返回”。
功能:select()
具有“超时”参数,您可以将其设置为1秒。然后,当选定的文件描述符之一需要服务时,select()
返回;或者,经过1秒后,返回[OR]。建议阅读select()
的手册页以了解详细信息