名称

zmq_inproc - 0MQ 本地进程内(线程间)通信传输方式

概要

进程内传输方式通过内存直接在共享同一 0MQ 'context' 的线程之间传递消息。

注意
使用 'inproc' 传输方式传递消息不涉及 I/O 线程。因此,如果你仅将 0MQ 'context' 用于进程内消息传递,你可以用零 I/O 线程初始化 'context'。详情请参阅 zmq_init

寻址

一个 0MQ 端点是一个由 'transport'`://` 和其后的一个 'address' 组成的字符串。'transport' 指定要使用的底层协议,而 'address' 指定要连接的传输方式特定的地址。

对于进程内传输方式,传输方式是 inproc,并且 'address' 部分的含义在下面定义。

为套接字分配本地地址

使用 'inproc' 传输方式通过 zmq_bind() 为 'socket' 分配本地地址时,'endpoint' 应被解释为一个用于标识要创建的 'name' 的任意字符串。'name' 在与该 'socket' 关联的 0MQ 'context' 中必须是唯一的,且长度可达 256 个字符。对 'name' 的格式没有其他限制。

连接套接字

使用 'inproc' 传输方式通过 zmq_connect() 将 'socket' 连接到对等方地址时,'endpoint' 应被解释为一个用于标识要连接的 'name' 的任意字符串。在 4.0 版本之前,该 'name' 必须已经通过将其分配给与要连接的 'socket' 属于同一 0MQ 'context' 的至少一个 'socket' 来事先创建。自 4.0 版本以来,zmq_bind()zmq_connect() 的顺序不再重要,就像 tcp 传输类型一样。

示例

为套接字分配本地地址
//  Assign the in-process name "#1"
rc = zmq_bind(socket, "inproc://#1");
assert (rc == 0);
//  Assign the in-process name "my-endpoint"
rc = zmq_bind(socket, "inproc://my-endpoint");
assert (rc == 0);
连接套接字
//  Connect to the in-process name "#1"
rc = zmq_connect(socket, "inproc://#1");
assert (rc == 0);
//  Connect to the in-process name "my-endpoint"
rc = zmq_connect(socket, "inproc://my-endpoint");
assert (rc == 0);

另请参阅

作者

此页面由 0MQ 社区编写。如需修改,请阅读 0MQ 贡献政策,地址是 https://zeromq.cn/how-to-contribute/