【发布时间】:2017-09-26 00:25:26
【问题描述】:
在 ZMQ zguide 中,他们 advice 总是在任务结束时进行清理。 我对最佳实践有点困惑。
第一个
- ...即使关闭所有套接字,zmq_ctx_destroy() 默认情况下会一直等待
- ...最后,销毁上下文
- ... 这将导致附加线程中的任何阻塞接收或轮询或发送返回错误。捕获该错误,然后设置 linger on,并关闭该线程中的套接字,
Q1:那么我需要在销毁上下文之前关闭所有套接字吗?
Q2:那么我需要销毁上下文吗?
查看 context.destroy() 我看到它在每个套接字上调用 linger 和 close。
Q3:我应该如何终止我的 ZMQ 资源?
编辑
如果我查看 jeromq 代码 - 我在 ZContext.destroy 内部看到了对destroySocket(每个套接字)的调用
s.setLinger( linger );
s.close();
sockets.remove( s );
然后它甚至调用sockets.clear(); 和context.term();
Q4:这就够了吗?
【问题讨论】:
-
为什么你会同时在 zeromq 邮件列表上问同样的问题。恕我直言,这不好。