2013-09-05 41 views
0

我使用的方法:ACE调试:如何使msg队列满?

ACE_Task :: putq(ACE_Message_Block * MB,ACE_Time_Value * TV)

这里是我称之为行: RET = putq(MB,的const_cast(& ACE_Time_Value: :零));

什么我基本上想的是,我需要从获得普通错误

EWOULDBLOCK和ESHUTDOWN

INT lastErr = ACE_OS :: last_error();

为了调试它的时候了......

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

我已经尝试过这样的: 而(保留> = 0) RET = putq(MB,的const_cast(& ACE_Time_Value :: MAX_TIME));

但我的线程被几个电话卡后,从来没有从putq返回...

提前许多thanx的提示!

彼得

回答

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