ZeroMQ API(二) 上下文
1、创建上下文
1.1 zmq_ctx_new(3)
1.1.1 名称
zmq_ctx_new - 创建新的ZMQ上下文
1.1.2 概要
void * zmq_ctx_new();
1.1.3 描述
zmq_ctx_new()函数创建一个新的?MQ上下文。该函数替换弃用函数zmq_init(3)。
1.1.4 线程安全
ZMQ上下文是线程安全的,可以根据需要在尽可能多的应用程序线程中共享,而不需要调用者需要额外的锁定。
1.1.5 返回值
如果成功,zmq_ctx_new()函数将返回一个不透明的句柄给新创建的上下文。 创建失败返回NULL。
1.1.6 错误
没有为此功能定义错误值。
1.2 zmq_init(废弃)
1.2.1 名称
zmq_init - 初始化ZMQ上下文
1.2.2 概要
void * zmq_init(int io_threads);
1.2.3 描述
zmq_init()函数初始化一个?MQ上下文。io_threads参数指定处理I / O操作的?MQ线程池的大小。 如果您的应用程序仅使用inproc传输进行消息传递,则可以将其设置为零,否则将其设置为至少一个。
1.2.4 线程安全
ZMQ上下文是线程安全的,可以根据需要在尽可能多的应用程序线程中共享,而不需要调用者需要额外的锁定。该功能已被zmq_ctx_new(3)弃用。
1.2.5 返回值
如果成功,zmq_init()函数将返回一个不透明的句柄给初始化的上下文。 否则它将返回NULL并将errno设置为下面定义的值之一。
1.2.6 错误
EINVAL:请求了一个无效数量的io_threads。
2、获取/设置上下文属性
2.1 zmq_ctx_set(3)
2.1.1 名称
zmq_ctx_set - 设置上下文选项
2.1.2 概要
int zmq_ctx_set(void * context,int option_name,int option_value);
2.1.3 描述
zmq_ctx_set()函数应将option_name参数指定的选项设置为option_value参数的值。
zmq_ctx_set()函数接受以下选项:
ZMQ_IO_THREADS:设置I / O线程的数量,ZMQ_IO_THREADS参数指定用于处理I/ O操作的?MQ线程池的大小。如果您的应用程序仅使用inproc传输进行消息传递,则可以将其设置为零,否则将其设置为至少一个。此选项仅适用于在上下文中创建任何套接字之前。默认值1。
ZMQ_THREAD_SCHED_POLICY:为I / O线程设置调度策略,ZMQ_THREAD_SCHED_POLICY参数为内部上下文的线程池设置调度策略。该选项在Windows上不可用。该选项支持的值可以在sched.h文件中找到,或者在http://man7.org/linux/man- pages/man2/sched_setscheduler.2.html中找到。此选项仅适用于在上下文中创建任何套接字之前。默认值-1。
ZMQ_THREAD_PRIORITY:设置I / O线程的调度优先级,ZMQ_THREAD_PRIORITY参数为内部上下文的线程池设置调度优先级。该选项在Windows上不可用。此选项支持的值取决于选定的调度策略。详细信息可以在sched.h文件或http://man7.org/linux/man-pages/man2/sched_setscheduler.2.html中找到。此选项仅适用于在上下文中创建任何套接字之前。默认值-1。
ZMQ_MAX_SOCKETS:设置套接字的最大数量,ZMQ_MAX_SOCKETS参数设置上下文允许的最大套接字数量。您可以使用ZMQ_SOCKET_LIMIT选项通过zmq_ctx_get(3)查询最大允许值。默认值1024。
ZMQ_IPV6:设置IPv6选项,ZMQ_IPV6参数设置从此时起在上下文中创建的所有套接字的IPv6值。值1表示启用IPv6,而0表示套接字将仅使用IPv4。当启用IPv6时,套接字将连接到IPv4或IPv6主机,或者接受来自IPv4和IPv6主机的连接。默认值为0。
2.1.4 返回值
如果成功,zmq_ctx_set()函数将返回零。否则它返回-1并将errno设置为下面定义的值之一。
2.1.5 错误
EINVAL:请求的选项option_name未知。
2.2 zmq_ctx_get(3)
2.2.1 名称
zmq_ctx_get - 获取上下文选项
2.2.2 概要
int zmq_ctx_get(void * context,int option_name)
2.2.3 描述
zmq_ctx_get()函数将返回option_name参数指定的选项。
zmq_ctx_get()函数接受以下选项名称:
ZMQ_IO_THREADS:获取I / O线程的数量,ZMQ_IO_THREADS参数返回此上下文的?MQ线程池的大小。
ZMQ_MAX_SOCKETS:获取最大数量的套接字,ZMQ_MAX_SOCKETS参数返回此上下文允许的最大套接字数量。
ZMQ_SOCKET_LIMIT:获取最大的可配置套接字数量,ZMQ_SOCKET_LIMIT参数返回zmq_ctx_set(3)将接受的最大数量的套接字。
ZMQ_IPV6:设置IPv6选项,ZMQ_IPV6参数返回上下文的IPv6选项。
2.2.4 返回值
如果成功,zmq_ctx_get()函数返回值为0或更大的值。 否则它返回-1并将errno设置为下面定义的值之一。
2.2.5 错误
EINVAL:请求的选项option_name未知。
3、销毁上下文
3.1 zmq_ctx_shutdown(3)
3.1.1 名称
zmq_ctx_shutdown - 关闭ZMQ上下文
3.1.2 概要
int zmq_ctx_shutdown(void * context);
3.1.3 描述
zmq_ctx_shutdown()函数将关闭?MQ上下文上下文。上下文关闭会导致上下文中打开的套接字上当前正在进行的任何阻塞操作立即返回错误代码为ETERM的内容。除zmq_close()之外,上下文中打开的套接字上的任何进一步操作都将失败,并显示错误代码为ETERM。此函数是可选的,客户端代码仍然需要调用zmq_ctx_term(3)函数来释放由zeromq分配的所有资源。
3.1.4 返回值
如果成功,zmq_ctx_shutdown()函数将返回零。 否则它将返回-1并将errno设置为下面定义的值之一。
3.1.5 错误
EFAULT:提供的上下文无效。
3.2 zmq_ctx_term(3)
3.2.1 名称
zmq_ctx_term - 销毁ZMQ上下文
3.2.2 概要
int zmq_ctx_term(void * context);
3.2.3 描述
zmq_ctx_term()函数应该销毁ZMQ上下文。
上下文终止按以下步骤执行:
上下文中打开的套接字当前正在进行的任何阻塞操作应立即返回一个错误代码ETERM。除zmq_close()之外,上下文中打开的套接字上的任何进一步操作都将失败,并显示错误代码为ETERM。
在中断所有阻塞调用之后,zmq_ctx_term()将被阻塞,直到满足以下条件:
上下文中打开的所有套接字都已使用zmq_close()关闭。
对于上下文中的每个套接字,应用程序使用zmq_send()发送的所有消息都已被物理地传输到网络对等体,或者使用ZMQ_LINGER套接字选项设置的套接字的逗留期限已过期。
有关套接字延续行为的更多详细信息,请参阅zmq_setsockopt(3)中的ZMQ_LINGER选项。该函数替换已弃用的函数zmq_term(3)。
3.2.4 警告
由于ZMQ_LINGER默认为“无限”,因此默认情况下,如果有任何挂起连接或发送,此功能将无限期阻止。我们强烈建议(a)在调用此函数之前,将ZMQ_LINGER设置为在所有套接字上为零,并且(b)关闭所有套接字。
3.2.5 返回值
如果成功,zmq_ctx_term()函数将返回零。否则它将返回-1并将errno设置为下面定义的值之一。
3.2.6 错误
EFAULT:提供的上下文无效。
EINTR:终止被信号中断。如果需要,它可以重新启动。
3.3 zmq_term(废弃)
3.3.1 名称
zmq_term - 终止ZMQ上下文
3.3.2 概要
int zmq_term(void * context);
3.3.3 描述
zmq_term()函数将终止?MQ上下文。
上下文终止按以下步骤执行:
上下文中打开的套接字当前正在进行的任何阻塞操作应立即返回一个错误代码ETERM。 除zmq_close()之外,上下文中打开的套接字上的任何进一步操作都将失败,并显示错误代码为ETERM。
中断所有阻塞调用后,zmq_term()应阻塞,直到满足以下条件:
上下文中打开的所有套接字都已使用zmq_close()关闭。
对于上下文中的每个套接字,应用程序使用zmq_send()发送的所有消息都已被物理地传送到网络对等体,或者使用ZMQ_LINGER套接字选项设置的套接字的逗留期限已过期。
有关套接字延续行为的更多详细信息,请参阅zmq_setsockopt(3)中的ZMQ_LINGER选项。该功能已被zmq_ctx_term(3)弃用。
3.3.4 返回值
如果成功,zmq_term()函数将返回零。 否则它将返回-1并将errno设置为下面定义的值之一。
3.3.5 错误
EFAULT:提供的上下文无效。
EINTR:终止被信号中断。 如果需要,它可以重新启动。
3.4 zmq_ctx_destory(废弃)
3.4.1 名称
zmq_ctx_destroy - 终止ZMQ上下文
3.4.2 概要
int zmq_ctx_destroy(void * context);
3.4.3 描述
zmq_ctx_destroy()函数应该销毁ZMQ上下文上下文。
上下文终止按以下步骤执行:
上下文中打开的套接字当前正在进行的任何阻塞操作应立即返回一个错误代码ETERM。 除zmq_close()之外,上下文中打开的套接字上的任何进一步操作都将失败,并显示错误代码为ETERM。
在中断所有阻塞调用之后,zmq_ctx_destroy()应该阻塞,直到满足以下条件:
上下文中打开的所有套接字都已使用zmq_close()关闭。
对于上下文中的每个套接字,应用程序使用zmq_send()发送的所有消息都已被物理地传送到网络对等体,或者使用ZMQ_LINGER套接字选项设置的套接字的逗留期限已过期。
有关套接字延续行为的更多详细信息,请参阅zmq_setsockopt(3)中的ZMQ_LINGER选项。该功能已被zmq_ctx_term(3)弃用。
3.4.4 返回值
如果成功,zmq_ctx_destroy()函数将返回零。 否则它将返回-1并将errno设置为下面定义的值之一。
3.4.5 错误
EFAULT:提供的上下文无效。
EINTR:终止被信号中断。 如果需要,它可以重新启动。
ZeroMQ API(二) 上下文的更多相关文章
- Day029 JDK8中新日期和时间API (二)
# JDK8中新日期和时间API (二) Instant介绍 Instant:时间线上的一个瞬时点. 这可能被用来记录应用程序中的事件时间 戳. 在处理时间和日期的时候,我们通常会想到年,月,日,时, ...
- Civil 3D API二次开发学习指南
Civil 3D构建于AutoCAD 和 Map 3D之上,在学习Civil 3D API二次开发之前,您至少需要了解AutoCAD API的二次开发,你可以参考AutoCAD .NET API二次开 ...
- 用JSON-server模拟REST API(二) 动态数据
用JSON-server模拟REST API(二) 动态数据 上一篇演示了如何安装并运行 json server , 在这里将使用第三方库让模拟的数据更加丰满和实用. 目录: 使用动态数据 为什么选择 ...
- Express4.x API (二):Request (译)
写在前面 最近学习express想要系统的过一遍API,www.expressjs.com是express英文官网(进入www.epxressjs.com.cn发现也是只有前几句话是中文呀~~),所以 ...
- Linux -- 基于zookeeper的java api(二)
Linux -- 基于zookeeper的java api(二) 写一个关于基于集群的zookeeper的自定义实现HA 基于客户端和监控器:使用监控的方法查看每个注册过的节点的状态来做出操作. Wa ...
- 百度地图API二:根据标注点坐标范围计算显示缩放级别zoom自适应显示地图
原文:百度地图API二:根据标注点坐标范围计算显示缩放级别zoom自适应显示地图 版权声明:本文为博主原创文章,转载请注明出处. https://blog.csdn.net/liusaint1992/ ...
- ZeroMQ API(三) 消息
1.初始化消息 1.1 zmq_msg_init(3) 1.1.1 名称 zmq_msg_init - 初始化空的ZMQ消息 1.1.2 概要 int zmq_msg_init(zmq_msg_t * ...
- ZeroMQ API(一) 总序
序 zeromq是一个轻量级的消息库.它扩展了标准的套接字接口,其特性与传统的消息中间件不同,zeromq提供异步消息队列.多消息传递模式.消息过滤(订阅).无缝访问多个传输协议等的抽象. 本系列AP ...
- Flink的流处理API(二)
一.Environment 1,getExecutionEnvironment getExecutionEnvironment会根据查询运行的方式决定返回什么样的运行环境,是最常用的一种创建执行环境的 ...
随机推荐
- 第三周作业(三)WordCount
这个程序主要就是统计一下文件中的字符数,单词数以及行数. 我的程序很简单,代码很简短,只实现了书中的基本功能. #include <stdio.h> #include <string ...
- grep文本处理工具
grep是一款文本过滤工具,基于正则表达式进行模式匹配sed:stream editor 流编辑器awk:linux上实现为gawk,文本报告生成器(格式化文本)文本搜索工具,根据用户指定的模式,对目 ...
- 词频统计(WEB)版
需求: 在以前的基础上把程序迁移到web平台,通过用户上传TXT的方式接收文件. 前端页面代码: <%@ Page Language="C#" AutoEventWireup ...
- apache DBUtils 使用例子demo
转自:http://blog.csdn.net/earbao/article/details/44901061 apache DBUtils是java编程中的数据库操作实用工具,小巧简单实用, 1.对 ...
- iOS 代码片段的添加!
说明.代码片段就是方便快捷输入的片段,类似do -while.switch等这些系统语句,这些系统的语句也是代码片段,快速输入一些常用的代码语句,就可以把这些语句写成代码片段! Example: 我们 ...
- There is no getter for property named 'notice' in 'class com.game.domain.Notices'
在插入数据时报错:There is no getter for property named 'notice' in 'class com.game.domain.Notices' 四月 11, 20 ...
- Java 流程控制
Java 流程控制 Java 分支结构 - if...else/switch 顺序结构只能顺序执行,不能进行判断和选择,因此需要分支 ...
- P2234 [HNOI2002]营业额统计
题目描述 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额.分析营业情况是 ...
- 洛谷 3379 最近公共祖先(LCA 倍增)
洛谷 3379 最近公共祖先(LCA 倍增) 题意分析 裸的板子题,但是注意这题n上限50w,我用的边表,所以要开到100w才能过,一开始re了两发,发现这个问题了. 代码总览 #include &l ...
- 解题:洛谷4314 CPU监控
题面 线段树·二重标记(什么鬼 用(a,b)标记表示先执行+a操作,然后对b取max,维护历史/当前最大值和历史/当前标记.然后我们发现区间加$x$就是$(x,-inf)$,区间赋$x$就是$(-in ...