非阻塞请求-答复方案(ZeroMQ)

时间:2019-11-16 01:26:04

标签: c zeromq

我正在Request-Reply方案中使用ZeroMQ套接字在两台机器之间交换消息。这种交换是通过带有一些其他功能的C程序完成的。

在响应器计算机停机的情况下,请求器无限期地等待消息,从而阻塞了程序的其余功能。这不是我想要的。

我尝试使用:

zmq_recv (requester, buffer, 256, ZMQ_DONTWAIT);

但是请求者立即返回,因为(显然)队列中没有消息。

在ZeroMQ中是否可以采用非阻塞的请求-答复方案?类似于:“如果在1秒钟内未收到消息,请返回”。

1 个答案:

答案 0 :(得分:1)

函数select()具有一个“超时”参数,您可以将其设置为1秒。然后,当所选文件描述符之一需要服务时,select()返回-OR-,如果经过1秒钟,则返回。建议阅读select()的MAN页以获取详细信息