ACE_Message_Queue的超时设置和消息清除

    在使用ACE_Message_Queue的时候通常需要有一个等待超时,我先前用的时候,等待超时总是无法生效,但后来改变了后就OK了。

       事情是这样的。ACE中是这样说明的,那么这意味着什么?当然我觉得是只有绝对时间才能生效,事实也是如此。param timeout The absolute time the caller will wait until for a block to be dequeued.举例来说,使用

virtual int dequeue_head ( ACE_Message_Block *& first_item , ACE_Time_Value * timeout = 0);
接口,那么第二个参数就要注意了,通常如果超时5秒钟,可以这样做。
ACE_Time_Value timeValue = ACE_OS :: gettimeofday ();
ACE_Time_Value test (5);
timeValue += test ;
g_sQueue . dequeue_head ( msg ,& timeValue );
这样,这里就可以实现超时的等待。我想这一点不仅仅适用于Message Queue,在其他地方的等待超时处依然有效,具体请查阅ACE接口说明。
 
当需要清除ACE_Message_Queue中剩余的消息时,只需要调用flush().这个接口内部从尾到头释放所有消息,并且queue是锁住的,内部调用 ACE_Message_Block的release(),以保证不出现内存泄漏。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值