作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
CZMQ 库为 zstr
和 zframe
类提供 nowait
选项(zstr_recv_nowait()
和 zframe_recv_nowait ()
),但没有像 zmsg_recv_nowait()
这样的东西。有什么解决办法吗?而不是使用带有 ZMQ_DONTWAIT
标志的 zmq_msg_recv
。我的代码是:
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
返回时,其他回复已经到达。
最佳答案
将轮询代码放入循环中。对一个套接字使用 poll 就可以了。
一个例子可能会有所帮助:
while (1) {
/* now receive all pending messages */
zmq_pollitem_t items[] = { {sock, 0, ZMQ_POLLIN, 0} };
/* this will block for 10msec, ZMQ_POLL_MSEC is for compatibility for v2.2 */
int rc = zmq_poll(items, 1, 10 * ZMQ_POLL_MSEC );
if (rc == -1)
break; // some error occured, check errno...
if (items [0].revents & ZMQ_POLLIN) {
/* there's something to receive */
zmsg_t *msg = zmsg_recv(sock);
}
/* sending bunch of messages */
}
关于c - 如何实现zmsg_recv_nowait?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14870251/
我是一名优秀的程序员,十分优秀!