0

我正在使用以下方法:

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 返回...

许多thanx提前提示!

彼得

4

1 回答 1

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

于 2013-09-05T16:22:17.407 回答