ACE C++ - Как реализовать время ожидания для вызова функции?
Мне нужно обернуть функцию в тайм-аут, используя ACE в C++. Эта функция ожидает ответа от ОС и иногда не возвращает.
Я не могу изменить функцию, поэтому я не могу поместить условие прерывания непосредственно в нее. Я должен добавить таймаут к функции извне.
Я видел аналогичный вопрос для него в boost - C++: Как реализовать таймаут для произвольного вызова функции?
Тем не менее, я использую ACE.
1 ответ
Решение
Поместите функцию в отдельный поток. Если поток не завершился в течение тайм-аута, отсоедините его и дайте ему поработать до конца в фоновом режиме, не получив от него никакого результата.
Обратите внимание, что это не будет работать, если функция имеет побочные эффекты (например, запись в файл).