C++ ACE调试:如何导致消息队列已满?
我使用的方法是: ACE_任务::putq(ACE_消息块*mb,ACE_时间值*tv) 这是我称之为的一行: ret=putq(mb、常量和时间值::零) 我基本上在尝试的是,我需要得到常规错误 从上到下 int lastErr=ACE_OS::last_error() 为了马上调试它 所以我的问题是,有没有一个简单的方法来强制这些错误 我已经试过了: 而(ret>=0) ret=putq(mb、常量和时间值::最大时间) 但是我的线程在几次调用后就被卡住了,而且从putq中再也没有返回 许多thanx提前提示C++ ACE调试:如何导致消息队列已满?,c++,nonblocking,shutdown,ace,getlasterror,C++,Nonblocking,Shutdown,Ace,Getlasterror,我使用的方法是: ACE_任务::putq(ACE_消息块*mb,ACE_时间值*tv) 这是我称之为的一行: ret=putq(mb、常量和时间值::零) 我基本上在尝试的是,我需要得到常规错误 从上到下 int lastErr=ACE_OS::last_error() 为了马上调试它 所以我的问题是,有没有一个简单的方法来强制这些错误 我已经试过了: 而(ret>=0) ret=putq(mb、常量和时间值::最大时间) 但是我的线程在几次调用后就被卡住了,而且从putq中再也没有返回 许多
Peter我认为对于第一部分(EWOULDBLOCK),我可以使用: ACE_Svc_Handler::msg_queue()->高水位(最大大小字节); ACE_Svc_Handler::msg_queue()->低水位标记(最小大小字节) 我认为这些符合我的需要,我观察到的正是我需要的 ESHUTDOWN错误的envoking是另一个问题,您可以通过适当地放置slow-down sleep方法来模拟它