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