Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在ZeroMQ中执行拉-推同步的另一种可靠方法_C++_Zeromq_Message Passing - Fatal编程技术网

C++ 在ZeroMQ中执行拉-推同步的另一种可靠方法

C++ 在ZeroMQ中执行拉-推同步的另一种可靠方法,c++,zeromq,message-passing,C++,Zeromq,Message Passing,如果您使用的是PUSH套接字,您会发现第一个连接的PULL套接字会占用不公平的消息份额。只有在成功连接所有PULL套接字时,才会发生消息的精确旋转,这可能需要几毫秒的时间。作为推/拉的一种替代方案,对于较低的数据速率,考虑使用路由器/经销商和负载平衡模式。 因此,在推/拉模式中进行同步的一种方法是使用负载平衡模式 对于下面这个特定的情况,我想知道是否有其他方法进行同步: 我可以将worker中的PULL端点设置为block,直到连接成功设置,然后通过worker的PULL端点向“sink”发送

如果您使用的是PUSH套接字,您会发现第一个连接的PULL套接字会占用不公平的消息份额。只有在成功连接所有PULL套接字时,才会发生消息的精确旋转,这可能需要几毫秒的时间。作为推/拉的一种替代方案,对于较低的数据速率,考虑使用路由器/经销商和负载平衡模式。 因此,在推/拉模式中进行同步的一种方法是使用负载平衡模式

对于下面这个特定的情况,我想知道是否有其他方法进行同步:

我可以将worker中的PULL端点设置为block,直到连接成功设置,然后通过worker的PULL端点向“sink”发送一条特殊消息。“sink”收到#工作人员的特殊消息后,“sink”向“呼吸机”发送一条带有REQ-REP的消息,通知所有工作人员已准备就绪“呼吸机”开始将工作分配给工人。 它可靠吗


图片来源于

是,只要
接收器
知道在告诉
呼吸机
可以开始发送消息之前要等待多少
工人
。有一个问题是,如果在
接收器连接之前启动,来自
工人的特殊消息是否能够通过-但你可以让他们一直发送特殊消息,直到他们开始从
呼吸机获取数据。如果这样做,
Sink
当然会忽略它接收到的任何重复项

当然,这与
工人
呼吸机
有一个带电的工作连接并不完全相同,但这本身可能会发送
工人
收到的特殊不做任何事情的信息。当他们收到其中一条时,他们就可以开始向
接收器发送特殊消息了