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会根据查询运行的方式决定返回什么样的运行环境,是最常用的一种创建执行环境的 ...
随机推荐
- Week2-作业1
第一章:引用:如果一架民用飞机上有一个功能,用户使用它的概率是百万分之一,你还要做这个功能么? 选择之后,这个功能是什么呢?谜底是飞机的安全功能. 个人认为,飞机的安全功能这个 ...
- java下Mysql基本操作
https://www.cnblogs.com/centor/p/6142775.html
- JAVA 对象序列化——Serializable
1.序列化是干什么的? 简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来.虽然你可以用你自己的各种各样的方法来保存object st ...
- ini_set
1.ini_set函数是设置选项中的值,在执行函数后生效,脚本结束的时候,这个设置也失效.ini_set 用于更改配置文件的配制,次更改仅用于此脚本的执行.不是所有的选项都能被改函数设置的. 2.in ...
- Art & Material
Art(Android runtime)模式伴随Android 4.4发布.相对于Dalvik模式来说,Art模式改善了Android程序的性能. Material Design伴随Android 5 ...
- 小程序 openid 的原始请求和网络请求
// 登录 wx.login({ success: res => { var code = res.code; //返回code // console.log(code) // 小程序appid ...
- PHP中测试in_array、isset、array_key_exists性能
测试in_array.isset.array_key_exists性能.自己写的简易测试代码: ini_set('display_errors',true); error_reporting(E_AL ...
- python自动化之连接数据库
# -*- coding: utf-8 -*- """ Created on Fri Mar 20 10:50:56 2015 @author: sl "&qu ...
- LDA-Latent Dirichlet Allocation 学习笔记
以下内容主要基于<Latent Dirichlet Allocation>,JMLR-2003一文,另加入了一些自己的理解,刚开始了解,有不对的还请各位指正. LDA-Latent Dir ...
- P2219 [HAOI2007]修筑绿化带
我是题面 这道题跟理想的正方形很像,不大明白蛤OI是怎么想的,一年出两道这么相近的题 这道题有两个矩形,所以就有了两种做法(说是两种做法,其实只是维护的矩形不同) 一种是维护大矩形,一种是维护小矩形, ...