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(二) 上下文的更多相关文章

  1. Day029 JDK8中新日期和时间API (二)

    # JDK8中新日期和时间API (二) Instant介绍 Instant:时间线上的一个瞬时点. 这可能被用来记录应用程序中的事件时间 戳. 在处理时间和日期的时候,我们通常会想到年,月,日,时, ...

  2. Civil 3D API二次开发学习指南

    Civil 3D构建于AutoCAD 和 Map 3D之上,在学习Civil 3D API二次开发之前,您至少需要了解AutoCAD API的二次开发,你可以参考AutoCAD .NET API二次开 ...

  3. 用JSON-server模拟REST API(二) 动态数据

    用JSON-server模拟REST API(二) 动态数据 上一篇演示了如何安装并运行 json server , 在这里将使用第三方库让模拟的数据更加丰满和实用. 目录: 使用动态数据 为什么选择 ...

  4. Express4.x API (二):Request (译)

    写在前面 最近学习express想要系统的过一遍API,www.expressjs.com是express英文官网(进入www.epxressjs.com.cn发现也是只有前几句话是中文呀~~),所以 ...

  5. Linux -- 基于zookeeper的java api(二)

    Linux -- 基于zookeeper的java api(二) 写一个关于基于集群的zookeeper的自定义实现HA 基于客户端和监控器:使用监控的方法查看每个注册过的节点的状态来做出操作. Wa ...

  6. 百度地图API二:根据标注点坐标范围计算显示缩放级别zoom自适应显示地图

    原文:百度地图API二:根据标注点坐标范围计算显示缩放级别zoom自适应显示地图 版权声明:本文为博主原创文章,转载请注明出处. https://blog.csdn.net/liusaint1992/ ...

  7. 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 * ...

  8. ZeroMQ API(一) 总序

    序 zeromq是一个轻量级的消息库.它扩展了标准的套接字接口,其特性与传统的消息中间件不同,zeromq提供异步消息队列.多消息传递模式.消息过滤(订阅).无缝访问多个传输协议等的抽象. 本系列AP ...

  9. Flink的流处理API(二)

    一.Environment 1,getExecutionEnvironment getExecutionEnvironment会根据查询运行的方式决定返回什么样的运行环境,是最常用的一种创建执行环境的 ...

随机推荐

  1. mysql 性能分析及explain用法

    转载自http://blog.sina.com.cn/s/blog_4586764e0100o9s1.html 使用explain语句去查看分析结果 如   explain select * from ...

  2. 浅谈iOS内存管理机制

    iOS内存管理机制的原理是引用计数,引用计数简单来说就是统计一块内存的所有权,当这块内存被创建出来的时候,它的引用计数从0增加到1,表示有一个对象或指针持有这块内存,拥有这块内存的所有权,如果这时候有 ...

  3. [转]string和stringstream用法总结

    转自:http://blog.csdn.net/xw20084898/article/details/21939811 作者:xw20084898 一.string string 是 C++ 提供的字 ...

  4. HDU 2078 复习时间

    http://acm.hdu.edu.cn/showproblem.php?pid=2078 Problem Description 为了能过个好年,xhd开始复习了,于是每天晚上背着书往教室跑.xh ...

  5. cxGrid 单元格回车移到下一行,当移到最后一个单元格时回车新增一行【转】

    1 在TcxGridDBTableView中,设定属性 NewItemRow.Visible = True 2 在cxgrid中输入数据怎样回车换行  在TcxGridDBTableView中  将属 ...

  6. Envoy如何打败Linkerd成为L7负载平衡器的最佳选择?

    本文转自:http://www.servicemesh.cn/?/article/41 作者:MIKE WHITE 翻译:姚炳雄 原文:Using Envoy to Load Balance gRPC ...

  7. Git Github使用错误汇总

    Git使用常见错误 error:failed to push some refs to 'xxx' 本地仓库没有Readme文件,先PULL下远程仓库 git pull --rebase origin ...

  8. nodejs 新特性

    一般时间没看nodejs了,又出了一些新特性了. 异步钩子     async_hooks      先看相关的文章吧 https://zhuanlan.zhihu.com/p/27394440 性能 ...

  9. 【uoj#311】[UNR #2]积劳成疾 dp

    题目描述 一个长度为 $n$ 的序列,每个数在 $[1,n]$ 之间.给出 $m$ ,求所有序列的 $\prod_{i=1}^{n-m+1}(\text{Max}_{j=i}^{j+m-1}a[j]) ...

  10. 十三个有彩蛋的Linux命令

    原文链接: https://my.oschina.net/u/4045573/blog/2986313   一键下载安装配置文本全部命令所需环境 sudo apt-get updategit clon ...