ACE C++ - Как реализовать время ожидания для вызова функции?

Мне нужно обернуть функцию в тайм-аут, используя ACE в C++. Эта функция ожидает ответа от ОС и иногда не возвращает.

Я не могу изменить функцию, поэтому я не могу поместить условие прерывания непосредственно в нее. Я должен добавить таймаут к функции извне.

Я видел аналогичный вопрос для него в boost - C++: Как реализовать таймаут для произвольного вызова функции?

Тем не менее, я использую ACE.

1 ответ

Решение

Поместите функцию в отдельный поток. Если поток не завершился в течение тайм-аута, отсоедините его и дайте ему поработать до конца в фоновом режиме, не получив от него никакого результата.

Обратите внимание, что это не будет работать, если функция имеет побочные эффекты (например, запись в файл).

Другие вопросы по тегам