ACE 调试:如何导致消息队列已满



我正在使用该方法:

ACE_Task::p utq (ACE_Message_Block *mb, ACE_Time_Value *tv)

这是我称之为的行:ret = putq(mb, const_cast(&ACE_Time_Value::零));

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

EWILLBLOCK 和 ESHUTDOWN from

int lastErr = ACE_OS::last_error();

为了立即调试它...

所以我的问题是,有一种简单的方法 如何强制此类错误 ?

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

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

提前感谢提示!

彼得

我认为

对于第一部分(EWILLBLOCK),我可以使用:

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错误的调用是另一个问题,您可以通过适当地放慢睡眠方法来模拟它。

相关内容

  • 没有找到相关文章

最新更新