gpt4 book ai didi

java - ZeroMQ:如何实现类C的多线程

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:14:30 24 4
gpt4 key购买 nike

在 C 中,我们有套接字和描述符,可以只获取其中之一并将它们交给线程,这使得您可以接受传入连接并将工作交给您喜欢的线程和线程可以自己发送回响应。

我的问题是,如何使用 ZeroMQ 实现这一点?使用 Request-Reply 模式,我似乎无法异步发送和接收,响应必须按顺序进行,我的目标是让多个客户端连接到单个服务器,不按顺序发送响应。

我查看了请求响应模式,但 API 明确指出,将套接字与多个线程一起使用是个坏主意。也许我错过了什么或者 ZeroMQ 比我知道的更聪明。如果您需要任何进一步的信息,请发表评论,我会尽力提供信息。

我还查看了提供的示例:Code Examples

这是套接字描述:ZMQ-Socket

最佳答案

通常,当您尝试使现有设计适应 0MQ 时,您会遇到麻烦。这里现有的设计将套接字(通常是 HTTP)传递给子进程或线程,然后让它们响应。这不是一个非常优雅的设计。它之所以有效,是因为每个新连接都作为套接字存在,并且因为发送回复时套接字被销毁。这些都不适用于 0MQ 应用程序。

0MQ 设计使用前端 ROUTER 套接字从客户端提取请求。然后它通过 inproc://套接字将这些请求传递给工作线程,使用后端 DEALER 来处理请求。工作线程使用 REP 套接字来接收请求,并发送它们的回复。然后主线程轮询前端和后端套接字,简单地在两者之间路由消息。

这就是那篇旧博客文章所解释的内容(使用旧的 XREP/XREQ 名称),并且在此处通过多种语言的示例对其进行了更详细的解释:http://zguide.zeromq.org/page:all#Multithreading-with-MQ

关于java - ZeroMQ:如何实现类C的多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11202316/

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