在zmq cpp代码中,轮询器也可以监视fd,请参见下文
mFd is created with eventfd as mFd(eventfd(0, 0))
zmq::pollitem_t poll[2] = {{mSocket, 0, ZMQ_POLLIN, 0},
{NULL, mFd, ZMQ_POLLIN, 0} }
while (!abort) {
zmq::poll(poll, 2, -1);
if (poll[0].revents & ZMQ_POLLIN) {
socket handling;
}
//event fd has activity
if (poll[1].revents & ZMQ_POLLIN) {
process other things
}
我们可以使用下面的代码来唤醒轮询器做其他事情,作为一个信号,当我们想尽快唤醒轮询器做某事并且套接字上没有任何活动时,这很有用。事件fd就像管道一样,一侧写一些东西来触发轮询器上的读取事件,从而唤醒轮询器
int x = 1;
write(mFd, &x, sizeof(x));
那么java zmq是否可以执行上述类似操作?除了套接字监视之外,我们还可以执行类似上述事件文件描述符的操作吗?有例子吗?