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会根据查询运行的方式决定返回什么样的运行环境,是最常用的一种创建执行环境的 ...
随机推荐
- 【Coursera】主成分分析
一.问题 主方向的概念是什么?为什么降低维度的方法是使方差最大化? 假设某两个特征之间成线性关系,在二维平面上的表示就是数据点呈线性分布,那么可以通过将数据在主方向上进行投影,得到一个一维的数据,这个 ...
- js+Canvas 利用js 实现浏览器保存图片到本地
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- ISCC2018(web)
ISCC2018 web writeup (部分) #web1:比较数字大小 只要比服务器上的数字大就好了 限制了输入长度,更改长度就好 #web2: 普通的代码审计,数组绕过 #web3:本地的诱惑 ...
- mysql 函数示例(转)
MySQL函数大全及用法示例 1.字符串函数ascii(str) 返回字符串str的第一个字符的ascii值(str是空串时返回0) mysql> select ascii('2'); ...
- 【转】正确的 Composer 扩展包安装方法
简单解释 composer install - 如有 composer.lock 文件,直接安装,否则从 composer.json 安装最新扩展包和依赖: composer update - 从 c ...
- 自定义smokeping告警(邮件+短信)
前段时间接到公司IT同事需求,帮助其配置smokeping的告警功能,之前配置的姿势有些问题,告警有些问题,现在调试OK,在此将关键配置点简单记录下. 关键的配置项主要有: 定义告警规则并配置将告警信 ...
- 【HLSDK系列】overview(俯视图)
温馨提示:使用PC端浏览器阅读可获得最佳体验 阅读本文时,请时不时就对照参考图看一下. 什么是overview? 如果你有使用过3D模型制作工具,例如3dsMax等等,在编辑模型时这些软件通常会展示四 ...
- c++11 List 容器
c++11 List 容器 List简介 list是一个双向链表容器 可高效地进行插入删除元素. list不可以随机存取元素,所以不支持at(pos)函数与[]操作符. ...
- Oracle 事务实例(非理论)
begin begin savepoint p1; ---------============ 在这里写删改差语句(SELECT 不行)每句以分号结尾:如 delete ta ...
- Android性能优化:手把手带你全面了解 内存泄露 & 解决方案
. 简介 即 ML (Memory Leak)指 程序在申请内存后,当该内存不需再使用 但 却无法被释放 & 归还给 程序的现象2. 对应用程序的影响 容易使得应用程序发生内存溢出,即 OOM ...