Я использую метод:
ACE_Task :: putq (ACE_Message_Block * mb, ACE_Time_Value * tv)
Вот строка, где я это называю:
ret = putq (мб, const_cast (&ACE_Time_Value :: ноль));
То, что я в основном пытаюсь, это то, что мне нужно получать регулярные ошибки
EWOULDBLOCK и ESHUTDOWN от
int lastErr = ACE_OS :: last_error ();
чтобы сразу отладить …
Так что мой вопрос, есть ли простой способ, как вызвать такие ошибки?
Я уже пробовал это:
while (ret> = 0)
ret = putq (мб, const_cast (&ACE_Time_Value :: max_time));
но мой поток застревает после нескольких вызовов и никогда не возвращается из putq …
Большое спасибо заранее за подсказки!
Питер
Я думаю, что для первой части (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 — это еще одна проблема, и вы можете смоделировать ее, поставив соответствующие методы замедленного сна.
Других решений пока нет …