gpt4 book ai didi

multithreading - 当使用ZeroMQ套接字时,我可以从一个线程发送send()并从另一个线程将recv()发送到同一套接字吗?

转载 作者:行者123 更新时间:2023-12-03 12:05:11 27 4
gpt4 key购买 nike

我找到了question!以前,但是我仍然不知道该怎么做,如果我需要通过使用ROUTER到DEALER套接字来构建异步客户端/服务器

在使用zeromq之前,当我需要构建一个异步服务器时,我将把套接字的读部分和写部分分开。
[dispatch] worker 将epoll_wait套接字的读取事件并启动[worker]线程根据消息进行一些工作,

最后,对于同一套接字,将在某个不同的线程中触发.send()操作。

读取和发送可以分为两个不同的线程。

接收和发送2个不同线程中的一个套接字

使用zeromq套接字是否可能(允许)?

实际上,我搜索了一些邮件列表并获得了否定答案。

然后我想知道如何处理这种情况?

如果套接字只能使用一个线程,如何提高整个服务器的并行度和吞吐量?

最佳答案

ZeroMQ宣扬“零共享==不共享任何东西*”

应该读到它不共享套接字(更确切地说是-ZMQ-socket 访问点 -object),因此正确,您不应将代码设计为在多个线程之间“共享”任何套接字。

这并不意味着两个不同的线程或分布式进程无法通过在它们之间设置的单个ZMQ套接字(一个.bind() -s,另一个.connect())彼此监听/交谈。

因此,您的 [ROUTER] -<__ behavioralArchetypePRIMITIVE_>可以对其输出到同一ZMQ-socket对象进行.bind(),该对象被发布以得到.connect()-在另一端由 [DEALER] -<__ behavioralAr>类型(<27行为形式)。并完成工作。

*)注意:

零共享规则有一个主要异常(exception),该规则可能会在某些本地主机线程之间有意共享ZMQ Context实例。

关于multithreading - 当使用ZeroMQ套接字时,我可以从一个线程发送send()并从另一个线程将recv()发送到同一套接字吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26019970/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com