名称
zmq_ctx_set - 设置上下文选项
概要
int zmq_ctx_set (void '*context', int 'option_name', int 'option_value');
描述
zmq_ctx_set() 函数将 'option_name' 参数指定的选项设置为 'option_value' 参数的值。
zmq_ctx_set() 函数接受以下选项:
ZMQ_BLOCKY: 修复阻塞行为
默认情况下,上下文在调用 zmq_ctx_term 时会永久阻塞。这种行为背后的假设是突然终止会导致消息丢失。大多数实际应用使用某种形式的握手来确保应用程序收到终止消息,然后在所有套接字上将 'ZMQ_LINGER' 设置为零来终止上下文。此设置是获得相同结果的更简单方法。当 'ZMQ_BLOCKY' 设置为 false 时,所有新套接字都将获得零的 linger 超时。您仍然必须在调用 zmq_ctx_term 之前关闭所有套接字。
默认值 |
true (旧行为) |
ZMQ_IO_THREADS: 设置 I/O 线程数
'ZMQ_IO_THREADS' 参数指定用于处理 I/O 操作的 0MQ 线程池的大小。如果您的应用程序仅使用 '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 上不可用。此选项支持的值取决于选择的调度策略。在 Linux 上,当调度策略为 SCHED_OTHER、SCHED_IDLE 或 SCHED_BATCH 时,OS 调度器不会使用线程优先级,而是使用线程的“nice value”;在这种情况下,如果 'ZMQ_THREAD_PRIORITY' 被设置为严格正值,系统调用“nice”将被用于将 nice value 设置为 -20(最高优先级),而不是调整线程优先级(对于这些调度策略,线程优先级必须为零)。详细信息可以在 sched.h 文件中找到,或访问 http://man7.org/linux/man-pages/man2/sched_setscheduler.2.html。此选项仅在上下文上创建任何套接字之前适用。
默认值 |
-1 |
ZMQ_THREAD_AFFINITY_CPU_ADD: 为 I/O 线程的亲和性列表添加一个 CPU
'ZMQ_THREAD_AFFINITY_CPU_ADD' 参数为内部上下文线程池的亲和性列表添加指定的 CPU。此选项仅在 Linux 上受支持。此选项仅在上下文上创建任何套接字之前适用。默认亲和性列表为空,这意味着不会为内部上下文的线程设置明确的 CPU 亲和性。
默认值 |
-1 |
ZMQ_THREAD_AFFINITY_CPU_REMOVE: 从 I/O 线程的亲和性列表中移除一个 CPU
'ZMQ_THREAD_AFFINITY_CPU_REMOVE' 参数从内部上下文线程池的亲和性列表中移除指定的 CPU。此选项仅在 Linux 上受支持。此选项仅在上下文上创建任何套接字之前适用。默认亲和性列表为空,这意味着不会为内部上下文的线程设置明确的 CPU 亲和性。
默认值 |
-1 |
ZMQ_THREAD_NAME_PREFIX: 设置 I/O 线程的名称前缀
'ZMQ_THREAD_NAME_PREFIX' 参数为内部上下文线程池创建的每个线程设置一个数字前缀。此选项仅在 Linux 上受支持。此选项对于通过“top -H”或“gdb”进行调试很有用;如果系统上有多个进程正在使用 ZeroMQ,通过此上下文选项提供特定于应用程序的前缀来区分属于不同进程的 ZeroMQ 后台线程会很有帮助。此选项仅在上下文上创建任何套接字之前适用。
默认值 |
-1 |
ZMQ_MAX_MSGSZ: 设置最大消息大小
'ZMQ_MAX_MSGSZ' 参数设置上下文中发送消息的最大允许大小。您可以使用 zmq_ctx_get 函数并使用 'ZMQ_MAX_MSGSZ' 选项查询最大允许值。
默认值 |
INT_MAX |
最大值 |
INT_MAX |
ZMQ_ZERO_COPY_RECV: 指定消息解码策略
'ZMQ_ZERO_COPY_RECV' 参数指定消息解码器在接收消息时是否应使用零拷贝策略。零拷贝策略在某些情况下可能导致内存使用量增加。此选项允许您使用旧的复制策略。您可以使用 zmq_ctx_get 函数并使用 'ZMQ_ZERO_COPY_RECV' 选项查询此选项的值。注意:处于 DRAFT(草稿)状态,在稳定版本中尚不可用。
默认值 |
1 |
ZMQ_MAX_SOCKETS: 设置最大套接字数
'ZMQ_MAX_SOCKETS' 参数设置上下文中允许的最大套接字数。您可以使用 zmq_ctx_get 函数并使用 'ZMQ_SOCKET_LIMIT' 选项查询最大允许值。
默认值 |
1023 |
ZMQ_IPV6: 设置 IPv6 选项
'ZMQ_IPV6' 参数设置从此时起在上下文中创建的所有套接字的 IPv6 值。值为 1
表示启用 IPv6,而 0
表示套接字仅使用 IPv4。启用 IPv6 后,套接字将连接到或接受来自 IPv4 和 IPv6 主机的连接。
默认值 |
0 |
返回值
zmq_ctx_set() 函数成功时返回零。否则返回 -1
并将 'errno' 设置为下面定义的值之一。
错误
- EINVAL
-
请求的选项 option_name 未知。
示例
void *context = zmq_ctx_new (); zmq_ctx_set (context, ZMQ_MAX_SOCKETS, 256); int max_sockets = zmq_ctx_get (context, ZMQ_MAX_SOCKETS); assert (max_sockets == 256);
另请参见
作者
此页面由 0MQ 社区编写。如需进行更改,请阅读位于 https://zeromq.cn/how-to-contribute/ 的 0MQ 贡献策略。