1 回答
 
                    
                    TA贡献1815条经验 获得超13个赞
问:“这样的实施可能会出现什么问题?”
- .poll()由于仅使用&- .recv()方法的阻塞形式,这种实现很容易出现死锁并失败
- 在多个对等点连接到实现循环传入/传出流量映射的接入点的情况下,这种实现的自我防御能力不够 
- .recv()这种实现方式是非常错误的,因为在这种情况下,只调用一个单独的代码- .send_multipart()是非常错误的,在这种情况下,会发出惊人的警告,需要进行多部分消息处理
- ipc://Transport Class 很容易隐藏与操作系统相关的用户级代码限制(由操作系统对路径名的格式和长度以及对 R/W/X 的有效用户权限进行设置)
- ipc://对于 O/S 服务尚未创建目标地址的情况,传输类- .connect()方法的使用取决于顺序(- .bind()需要首先成功)
- 最后但并非最不重要的一点是,任何 - .bind()对同一- ipc://传输类目标的下一次尝试都会默默地破坏您- ROUTER对消息传递/信令平面基础设施的预期访问,并且您的实现已经花费了零努力来自我保护和自我诊断错误,这些错误可能会默默地发生出现在“幕后”
Zeromq 不应该自动处理死锁吗?我尝试使用zeromq指南mspoller中给出的示例如果我不能同时使用.poll()和recv(),我应该如何使用ZMQ Poller结构?– hao123
不,
ZeroMQ zen-of-zero 注重性能+低延迟,因此请考虑将预防阻塞的所有应有注意都掌握在您自己的手中(根据需要和需要的地方,核心库永远不会比实现几乎线性可扩展性能的目标所需的)。
不,
自由使用.poll()- 和 -.recv()方法,但完成它以适应非阻塞方式 -.poll( 0 )并添加主动检测+多部分消息的处理(再次,最好以非阻塞方式,使用zmq.NOBLOCK选项标志,其中合适的 )。自阻塞会使代码失控。
添加回答
举报
