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