Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.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++ 如何在没有zmq_项的情况下删除阻塞recv,从而消除中心zmq_上下文?_C++_Multithreading_Sockets_Zeromq - Fatal编程技术网

C++ 如何在没有zmq_项的情况下删除阻塞recv,从而消除中心zmq_上下文?

C++ 如何在没有zmq_项的情况下删除阻塞recv,从而消除中心zmq_上下文?,c++,multithreading,sockets,zeromq,C++,Multithreading,Sockets,Zeromq,我有几个线程连接到同一个线程上的同一个zmq_上下文 建议的关闭方法是使用zmq_术语,它会唤醒线程,但会关闭所有套接字 我在不同的线程上有不同的套接字,希望共享相同的上下文以减少zmq线程数 有一个recv阻塞,我希望能够在不影响所有其他插座的情况下立即关闭它 使用zmq时这是否可能?在使用阻塞步骤时使用多线程方式本身就是矛盾的 重新设计您的读取操作,以避免阻塞recv,或者添加另一个信令层,以允许另一个线程在未从其常规操作中接收AkePaLiveSig时杀死挂起的线程。许多选项可以扩展这个相

我有几个线程连接到同一个线程上的同一个zmq_上下文

建议的关闭方法是使用zmq_术语,它会唤醒线程,但会关闭所有套接字

我在不同的线程上有不同的套接字,希望共享相同的上下文以减少zmq线程数

有一个recv阻塞,我希望能够在不影响所有其他插座的情况下立即关闭它

使用zmq时这是否可能?

在使用阻塞步骤时使用多线程方式本身就是矛盾的 重新设计您的读取操作,以避免阻塞recv,或者添加另一个信令层,以允许另一个线程在未从其常规操作中接收AkePaLiveSig时杀死挂起的线程。许多选项可以扩展这个相当原始的模型

ZeroMQ在这方面是一个非常好的工具包

这将适用于这样一种情况,[Worker]单元不会一直挂在blocking.recv中


如前所述,外部线程可以触发并删除一个进程,该进程没有响应,因此也不会仅仅通过从[Worker]丢失一些常规softKeepAliveSIG更新消息来读取任何软信号,因此假设它丢失了。。。图19是一本伟大的书《连接的代码》(第1卷)中的一个功能,它本身无法在任何死机上完成-[Worker]

如果您想用阻塞recv终止线程,一种方法是安排其他一些“控制器”线程向其发送“kill”消息。kill消息只是一条普通消息,但它周围的协议将导致接收线程清理并退出

有很多例子,但在当前的环境中,寻找具有Kill信令的并行管道