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