ZMQ_POLL(3) | 0MQ Manual | ZMQ_POLL(3) |
zmq_poll - input/output multiplexing
int zmq_poll (zmq_pollitem_t *items, int nitems, long timeout);
The zmq_poll() function provides a mechanism for applications to multiplex input/output events in a level-triggered fashion over a set of sockets. Each member of the array pointed to by the items argument is a zmq_pollitem_t structure. The nitems argument specifies the number of items in the items array. The zmq_pollitem_t structure is defined as follows:
typedef struct {
void *socket;
int fd;
short events;
short revents; } zmq_pollitem_t;
For each zmq_pollitem_t item, zmq_poll() shall examine either the 0MQ socket referenced by socket or the standard socket specified by the file descriptor fd, for the event(s) specified in events. If both socket and fd are set in a single zmq_pollitem_t, the 0MQ socket referenced by socket shall take precedence and the value of fd shall be ignored.
For each zmq_pollitem_t item, zmq_poll() shall first clear the revents member, and then indicate any requested events that have occurred by setting the bit corresponding to the event condition in the revents member.
If none of the requested events have occurred on any zmq_pollitem_t item, zmq_poll() shall wait timeout milliseconds for an event to occur on any of the requested items. If the value of timeout is 0, zmq_poll() shall return immediately. If the value of timeout is -1, zmq_poll() shall block indefinitely until a requested event has occurred on at least one zmq_pollitem_t.
The events and revents members of zmq_pollitem_t are bit masks constructed by OR’ing a combination of the following event flags:
ZMQ_POLLIN
ZMQ_POLLOUT
ZMQ_POLLERR
ZMQ_POLLPRI
The zmq_poll() function may be implemented or emulated using operating system interfaces other than poll(), and as such may be subject to the limits of those interfaces in ways not defined in this documentation.
The zmq_pollitem_t array must only be used by the thread which will/is calling zmq_poll.
If a socket is contained in multiple zmq_pollitem_t arrays, each owned by a different thread, the socket itself needs to be thead-safe (Server, Client, ...). Otherwise, behaviour is undefined.
Upon successful completion, the zmq_poll() function shall return the number of zmq_pollitem_t structures with events signaled in revents or 0 if no events have been signaled. Upon failure, zmq_poll() shall return -1 and set errno to one of the values defined below.
ETERM
EFAULT
EINTR
Polling indefinitely for input events on both a 0MQ socket and a standard socket..
zmq_pollitem_t items [2]; /* First item refers to 0MQ socket 'socket' */ items[0].socket = socket; items[0].events = ZMQ_POLLIN; /* Second item refers to standard socket 'fd' */ items[1].socket = NULL; items[1].fd = fd; items[1].events = ZMQ_POLLIN; /* Poll for events indefinitely */ int rc = zmq_poll (items, 2, -1); assert (rc >= 0); /* Returned events will be stored in items[].revents */
zmq_socket(3) zmq_send(3) zmq_recv(3) zmq(7)
Your operating system documentation for the poll() system call.
This page was written by the 0MQ community. To make a change please read the 0MQ Contribution Policy at http://www.zeromq.org/docs:contributing.
01/18/2023 | 0MQ 4.3.4 |