ACE调试:如何使msg队列满?

时间:2013-09-05 13:40:07

标签: c++ nonblocking shutdown ace getlasterror

我正在使用方法:

ACE_Task :: putq(ACE_Message_Block * mb,ACE_Time_Value * tv)

以下是我称之为的行: ret = putq(mb,const_cast(& ACE_Time_Value :: zero));

我基本上尝试的是我需要定期出错

来自

的EWOULDBLOCK和ESHUTDOWN

int lastErr = ACE_OS :: last_error();

立即调试......

所以我的问题是,它有一个简单的方法来强制这样的错误吗?

我已经尝试过了:        while(ret> = 0)           ret = putq(mb,const_cast(& ACE_Time_Value :: max_time));

但我的线程在几次调用后卡住了,从不从putq返回......

许多提前提示提示!

彼得

1 个答案:

答案 0 :(得分:0)

我认为第一部分(EWOULDBLOCK)我可以使用:

ACE_Svc_Handler :: msg_queue() - > high_water_mark(MAX_BUF_SIZE_BYTES); ACE_Svc_Handler :: msg_queue() - > low_water_mark(MIN_BUF_SIZE_BYTES);

我认为这些符合我的需要,而我所观察到的正是我所需要的。

ESHUTDOWN错误的调用是另一个问题,你可以通过适当放慢速睡眠方法来模拟它。