Estoy ejecutando la función Foo desde la biblioteca de otra persona en una aplicación de subproceso único actualmente. La mayoría de las veces, hago una llamada a Foo y es realmente rápido, algunas veces hago una llamada a Foo y me lleva una eternidad. No soy un hombre paciente, si Foo va a durar para siempre, quiero detener la ejecución de Foo y no llamarlo con esos argumentos.¿Puedo crear un hilo de temporizador de watchdog de software en C++ usando Boost Signals2 y Threads?
¿Cuál es la mejor manera de llamar a Foo de forma controlada (mi entorno actual es POSIX/C++) de modo que pueda detener la ejecución después de un cierto número de segundos. Siento que lo correcto es crear un segundo hilo para llamar a Foo, mientras que en mi hilo principal creo una función de temporizador que eventualmente indicará el segundo hilo si se queda sin tiempo.
¿Hay algún otro modelo (y solución) más adecuado? Si no, ¿la biblioteca Signals2 de Boost y los Threads funcionarían?
Solo para aclarar, 'timed_join' * no * detener el' Foo() 'ejecución del hilo si se alcanza el tiempo de espera, como pensaba Aron había pedido para. En cambio, la persona que llama simplemente sabrá que el subproceso 'Foo()' aún se estaba ejecutando cuando se alcanzó el tiempo de espera. – pilcrow