【问题标题】:ACE debugging: How to cause msg queue full?ACE 调试:如何导致 msg 队列已满?
【发布时间】:2013-09-05 13:40:07
【问题描述】:

我用的是方法:

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();

为了马上调试...

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

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

但是我的线程在几次调用后就卡住了,并且永远不会从 putq 返回...

提前多谢提示!

彼得

【问题讨论】:

    标签: c++ nonblocking shutdown ace getlasterror


    【解决方案1】:

    我认为第一部分(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错误的调用是另一个问题,你可以通过适当的放慢睡眠方法来模拟它。

    【讨论】:

      猜你喜欢
      • 2011-06-15
      • 1970-01-01
      • 1970-01-01
      • 2015-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多