c++ - 在不同线程的套接字中使用 ZMQ,但不能同时使用
问题描述
我目前正在使用 ZMQ 与另一个模拟硬件的进程进行通信。然后这个消息连接到一个硬件接口类,然而这个接口假定线程安全,即使用来自不同线程的接口对象是安全的。
我完全控制了接口后端,但我不确定如何使用 ZMQ 处理这个问题。我的套接字使用 REQ/REP 模型,其他套接字使用 PUB/SUB。
我想要做的只是在每个套接字周围创建一个互斥锁以停止套接字的实际并发使用,但让它们可以从多个线程中使用(因此我可以阻塞线程),但显然我必须“传输套接字” ? 我不知道这意味着什么,这样做的概念对我来说毫无意义,并且对这个问题的回答......没有帮助(关于“ZMQ之神”的长篇大论?)
这个问题的答案似乎说互斥锁算作障碍,但我不知道实际的“传输”是如何工作的,以及为什么如果受互斥锁保护,ZMQ 不允许多线程使用,以及这与这种“转移”。
我一直看到的另一种选择是“使用对套接字”。但是我不知道这应该如何工作,这似乎只是在把罐子踢下去,至少对于我的应用程序(尽管我在其他地方使用 ZMQ 对套接字,所以我并不反对他们)。基本上,接口类不知道有多少线程在调用它,什么线程在调用它,或者它在哪里被使用,所以没有办法,AFAIK,要创建对套接字,而且不会有一对的套接字,会有一个 1 : N 的关系。
解决方案
推荐阅读
- typescript - 如何正确继承 Typescript 中的父组件?
- odata - 变更集中的条目订单已通过附加项目进行了修改
- azure - 无法在浏览器中访问 Neo4j 社区版(安装在 Azure 中的 Linux 虚拟机上)
- javascript - 伊斯坦布尔忽略下一个也忽略jsdoc
- r - 尝试在 Shiny 应用程序中使用相关的多选列表作为过滤器
- javascript - ng-template 中未定义的全局变量
- amazon-web-services - 如何从 AWS Data Exchange 下载数据集?
- azure - Azure DevOps:Chocolatey,安装 Google Chrome 问题
- python - PLY 解析 C 文件以获取花括号构造
- java - 捕获拦截器的返回值