В настоящее время я запускаю функцию Foo из чужой библиотеки в однопоточном приложении. Большую часть времени я звоню в Foo, и это очень быстро, иногда я звоню в Foo, и это занимает вечность. Я не терпеливый человек, если Foo собирается принять навсегда, я хочу остановить выполнение Foo и не вызывать его с этими аргументами.
Каков лучший способ вызывать Foo контролируемым образом (моя текущая среда - POSIX / C ++), чтобы я мог остановить выполнение через определенное количество секунд. Я чувствую, что здесь нужно создать второй поток для вызова Foo, в то время как в моем основном потоке я создаю функцию таймера, которая в конечном итоге будет сигнализировать второму потоку, если у него закончится время.
Есть ли другая, более подходящая модель (и решение)? Если нет, то будет ли работать библиотека Boost's Signals2 и Threads?