首页 > 其他 > 详细

zmq linger

时间:2019-02-18 13:34:12      阅读:702      评论:0      收藏:0      [点我收藏+]

zmq.RCVTIMEO:在一个recv操作返回EAGAIN错误前的最大时间

设置socket的接收操作超时时间。如果属性值是0,zmq_recv(3)函数将会立刻返回,如果没有接收到任何消息,将会返回EAGAIN错误。如果属性值是 -1,将会阻塞,直到接收到消息为止。对于任何其它值,都会进行等待这么多时间,直到返回EAGAIN错误。

技术分享图片

 

zmq.SNDHWM:对向外发送的消息设置高水位(最大缓存量)

ZMQ_SNDHWM属性将会设置socket参数指定的socket对外发送的消息的高水位。高水位是一个硬限制,它会限制每一个与此socket相连的在内存中排队的未处理的消息数目的最大值。0值代表着没有限制。

如果已经到达了规定的限制,socket就需要进入一种异常的状态,表现形式因socket类型而异。socket会进行适当的调节,比如阻塞或者丢弃已发送的消息。请从zmq_socket(3)函数中查看更多细节,获取每种类型的socket的精确的行为。

ZMQ并不能保证可以接收像ZMQ_SNDHWM参数一样多的消息,而实际的限制可能在60~70%一下,这取决于这个socket上的消息流。

 

技术分享图片

 

zmq.RCVHWM:对进入socket的消息设置高水位

ZMQ_RCVHWM属性将会设置socket参数指定的socket进入的消息的高水位。高水位是一个硬限制,它会限制每一个与此socket相连的在内存中排队的未处理的消息数目的最大值。0值代表着没有限制。

如果已经到达了规定的限制,socket就需要进入一种异常的状态,表现形式因socket类型而异。socket会进行适当的调节,比如阻塞或者丢弃被发送的消息。请从zmq_socket(3)函数中查看更多细节,获取每种类型的socket的精确的行为。

技术分享图片

 

zmq.LINGER:为socket关闭设置停留时间

ZMQ_LINGER属性会给指定的socket设定关闭前的停留时间。停留时间指定了在对一个socket调用zmq_close(3)函数之后,这个socekt上即将被发送但还没有被发送到对端的消息在内存中继续停留的时间。这个属性进而还会影响到与这个scoket相关联的context上zmq_term(3)操作的进行终结的结果。下面简述了不同的行为:

属性值 -1表示无限的停留时间。还没被发送的消息在socket调用zmq_close()操作之后不会被丢弃;试图使用zmq_term()操作对context进行终结的操作会被阻塞,直到所有没有被发送的消息被发往对端为止。

属性值0 表示没有停留时间。当使用zmq_close()函数将socket关闭的时候,所有没有被发送呃消息都会被丢弃。

属性是正数值表示设置一个毫秒为单位的停留时间。在第socket调用zmq_close()操作后,还没有发送的消息不会被丢弃;试图使用zmq_term()对于此scoket相关联的context进行终结的时候会被阻塞,直到所有未被发送的消息都被发往对端;或者停留时间已经到达,此时所有未发送的消息都会被丢弃。

 技术分享图片

 

zmq.SNDTIMEO:在一个发送操作返回EAGAIN之前等待的最大时间

设置指定socket的发送超时。如果属性值是0,zmq_send(3)函数会立即返回,如果无法发送此消息,则返回EAGAIN错误值。如果属性值是 -1,那么在消息发送之前会进入阻塞模式。对于所有其它的值,将会在超时时间内进行尝试发送消息,超时后返回EAGAIN错误

技术分享图片

 

 

 

zmq linger

原文:https://www.cnblogs.com/callyblog/p/10395021.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!