ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq_poll

zmq_poll(3)     ØMQ Manual - ØMQ/4.1.0

Name

zmq_poll - I/O多路技术

Synopsis

int zmq_poll (zmq_pollitem_t *items, int nitems, long timeout);

Description

zmq_poll()函数为应用程序提供了一种对一组socket进行多路I/O事件水平触发的机制。items参数指向的数组中的每一个元素都是一个zmq_pollitem_t结构体。nitems参数指定了items数组里面的元素个数。zmq_pollitem_t结构的敌营如下所示:

typedef struct
{
void //*socket//;
int //fd//;
short //events//;
short //revents//;
} zmq_pollitem_t;

对每一个zmq_pollitem_t项,zmq_poll()函数都会对socket指定的socket或者fd指定的标准socket文件描述符检查其events.参数。如果socket和fd的值都进行了设置,则socket参数指定的ZMQ socket会进行优先检查,fd则会被忽略。

对每一个zmq_pollitem_t项,zmq_poll() 函数会首先清除 revents成员变量,然后为任何发生了改变的事件设置当前事件对应的位来指明哪个事件发生了什么变化。

如果在zmq_pollitem_t项中,没有一个请求事件发生,zmq_poll()函数将会等待timeout毫秒后返回。如果timeout参数的值是0,zmq_poll()函数会立即返回。如果timeout值是 -1,zmq_poll()则会进入无限阻塞等待状态,直到至少一个zmq_pollitem_t项上请求的事件发生了。

zmq_pollitem_t结构中的events和revents成员是由以下标志进行位与和或操作组成的:

  ZMQ_POLLIN

    对于ZMQ socket来说,至少有一个消息在这个socket上被非阻塞的接收到了。对于标准socket来说,此标志和系统调用的poll()函数的POLLIN标志等价,而且通常意味着,fd文件描述符上至少非阻塞的接收到了1B的数据。

  ZMQ_POLLOUT

    对于ZMQ socket来说,至少有一个消息使用非阻塞模式发送了。对于标准socket来说,此标志和系统调用poll()函数的POLLOUT标志等价,这通常意味着至少有1B的数据使用非阻塞模式写到了fd文件描述符里面。

  ZMQ_POLLERR

    对于标准socket来说,这个标志通过zmq_poll()传递给底层的系统调用poll(),通常此标志意味着fd上出现了一些错误。对于ZMQ socket来说,这个标志在events中不会造成影响,而且此标志不会出现在revents中被zmq_poll()返回。

字应用的时候应该优先使用zmq_poll()而不是系统调用poll()。在使用poll()函数的时候有些方法可能会受到本文档中没有定义的限制。

Return value

如果执行成功,zmq_poll()函数会返回被标记了事件的zmq_pollitem_t结构体的数目,如果返回0,说明没有事件发生。如果执行失败,则返回 -1, 并且设置errno的值为下列定义的值。

Errors

  ETERM

    在items给出的数组中,至少有一个socket相联系的ZMQ context已经被终结了。

  EFAULT

    items参数不可用(NULL)

  EINTR

    在任何事件响应之前,这个操作被系统信号中断了。

Example

  阻塞方式响应ZMQ socket和标准系统socket

zmq_pollitem_t items [];
/* First item refers to ØMQ socket 'socket' */
items[].socket = socket;
items[].events = ZMQ_POLLIN;
/* Second item refers to standard socket 'fd' */
items[].socket = NULL;
items[].fd = fd;
items[].events = ZMQ_POLLIN;
/* Poll for events indefinitely */
int rc = zmq_poll (items, , -);
assert (rc >= ); /* Returned events will be stored in items[].revents */

See also

zmq_socket(3) zmq_send(3) zmq_recv(3) zmq(7)

你操作系统中对poll()系统调用的文档。

Authors

This page was written by the ØMQ community. To make a change please read the ØMQ Contribution Policy at http://www.zeromq.org/docs:contributing.

Web site design and content is copyright (c) 2007-2012 iMatix Corporation. Contact us for professional support. Site content licensed under the Creative Commons Attribution-Share Alike 3.0 License. ØMQ is copyright (c) Copyright (c) 2007-2012 iMatix Corporation and Contributors. ØMQ is free software licensed under the LGPL. ØMQ, ZeroMQ, and 0MQ are trademarks of iMatix Corporation. Terms of Use — Privacy

Policy

更多 ZeroMQ API :http://www.cnblogs.com/fengbohello/p/4230135.html

翻译:风波

mail : fengbohello@qq.com

ZeroMQ接口函数之 :zmq_poll - I/O多路技术的更多相关文章

  1. ZeroMQ接口函数之 :zmq - 0MQ 轻量级消息传输内核

    官方网址:http://api.zeromq.org/4-0:zmq zmq(7) 0MQ Manual - 0MQ/3.2.5 Name zmq – ØMQ 轻量级消息传输内核 Synopsis # ...

  2. ZeroMQ接口函数之 :zmq_bind - 绑定一个socket

    ZeroMQ 官方地址 : http://api.zeromq.org/4-0:zmq-bind zmq_bind(3) ZMQ Manual - ZMQ/3.2.5 Name zmq_bind -  ...

  3. ZeroMQ接口函数之 :zmq_connect - 由一个socket创建一个对外连接

    ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq_connect zmq_connect(3)  ØMQ Manual - ØMQ/3.2.5 Name zmq_c ...

  4. ZeroMQ接口函数之 :zmq_curve – 安全的认证方式和保密方式

    ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq_curve zmq_curve(7) ØMQ Manual - ØMQ/4.1.0 Name zmq_curve  ...

  5. ZeroMQ接口函数之 :zmq_tcp – 使用TCP协议的ØMQ网络单播协议

    ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq-tcp zmq_tcp(7)          ØMQ Manual - ØMQ/4.1.0 Name zmq_t ...

  6. ZeroMQ接口函数之 :zmq_pgm – ØMQ 使用PGM 进行可靠的多路传输

    ZeroMQ API 目录 :http://www.cnblogs.com/fengbohello/p/4230135.html ——————————————————————————————————— ...

  7. ZeroMQ接口函数之 :zmq_socket – 创建ZMQ套接字

    ZeroMQ API 目录 :http://www.cnblogs.com/fengbohello/p/4230135.html ZeroMQ 官方地址:http://api.zeromq.org/4 ...

  8. ZeroMQ接口函数之 :zmq_setsockopt –设置ZMQ socket的属性

    ZeroMQ API 目录 :http://www.cnblogs.com/fengbohello/p/4230135.html 本文地址 :http://www.cnblogs.com/fengbo ...

  9. ZeroMQ接口函数之 :zmq_getsockopt – 获取ZMQ socket的属性

    ZeroMQ API 目录 :http://www.cnblogs.com/fengbohello/p/4230135.html 本文地址 :http://www.cnblogs.com/fengbo ...

随机推荐

  1. Java实现Mysql数据库自动备份

    最近项目中有一个这样的需求,要求定时备份数据库.看了一些网上的资料,了解到主要思路是是使用java中的Runtime类的exec()方法,可以直接调用windows的cmd命令,参数就是Mysql的备 ...

  2. 基于Material Design(转载)

    SeeNewsV2新闻Android客户端 基于Material Design http://www.codesocang.com/gn/xiangmu/33630.html 直接拿来用!十大Mate ...

  3. linux配置oracle11G监听及本地网络服务 及 数据库建库

    配置监听及本地网络服务 在oracle用户的图形界面oracle用户中,新开启一个终端,输入命令netca 会弹出如下界面. 数据库建库 在oracle用户的图形界面oracle用户中,新开启一个终端 ...

  4. 讨论一下hibernate如何动态注册一个动态生成的实体类

    如何动态生成实体类请参考这篇博文:http://www.cnblogs.com/anai/p/4269858.html 下面说说得到实体类后,如何能使用hibernate的接口来进行数据访问. 我们都 ...

  5. 20160620001 FileUpload控件获取上传文件的路径

    参考地址: http://bbs.csdn.net/topics/350051517 —————————————————————————————— 用js实现 <%@ Page Language ...

  6. jQuery应用之(二)使用jQuery管理选择结果(荐)

    使用jQuery选择出来的元素与数组非常类似,可以通过jQuery提供的一系列方法对其进行处理,包括长度.查找某个元素,截取某个段落等. 1.获取元素的个数. 在jQuery中可以通过size()方法 ...

  7. c#如何在win7下设置IE代理的完美解决方案

    有人还发现:在window7下, 在一个进程中, 设置和取消不能都执行,---- 要么设置,要么取消. 但如果第一次运行时,只进行设置代理,退出后再进运行,只进行取消,这是没有问题的.  简单说说中医 ...

  8. 浅谈JavaScript DOM编程艺术读后感和一点总结

    最近工作不是很忙就想想想JavaScript的内部组成和一些要点,就是从这本书开始的.对新手来说还好,简单易懂. 简单终结下我重书中学到的一些要点. 下面都是个人学习的要点提取: 1.给自己预留退路, ...

  9. 【原创】java NIO FileChannel 学习笔记 新建一个FileChannel

    首先使用FileChannel 的open方法获取一个FileChannel对象.下面这段代码是FileChannel中open方法的代码. public static FileChannel ope ...

  10. Linux系统下LNMP一键搭建Linux、PHP、MySQL环境(适合新手搭建linux下的web生成环境)

    一. 首先要解释一下,什么是LNMP,LNMP起源于LAMP,LAMP是Linux+Apache+Mysql/MariaDB+Perl/PHP/Python的缩写,这里将Web服务端的Apache替换 ...