0
CZMQ库提供nowait
选项zstr
和zframe
类(zstr_recv_nowait()
和zframe_recv_nowait()
),但没有什么像zmsg_recv_nowait()
。有没有解决方法?而不是使用zmq_msg_recv
和ZMQ_DONTWAIT
标志。我的代码是:如何实现zmsg_recv_nowait?
zmq_pollitem_t items[] = { {sock, 0, ZMQ_POLLIN, 0} };
zmq_poll(items, 1, 10);
/* now receive all pending messages */
while (1) {
zmsg_t *msg = zmsg_recv(sock); /* this will block after the last message received */
/* consume message here */
}
/* sending bunch of messages */
我正在做异步REQ/REP
。发送多个请求然后在准备好时收到回复。此代码将阻止我的应用程序。另外,我做一个zmq_poll
似乎很难看,接收一个消息等等,因为在zmq_poll
返回时,其他答复已经到达。
为了澄清,使用zmq_poll检查时,在插槽中安装的输入,然后只准备插座的recv。 NOWAIT选项是丑陋的,因为它意味着你的代码是手动循环,睡眠等。zmq_poll是一个更清洁的方法。指南有很多这方面的例子。 – 2013-02-17 23:26:35