Attualmente sto eseguendo la funzione Foo dalla libreria di qualcun altro in un'applicazione a thread singolo. Il più delle volte, faccio una chiamata a Foo ed è molto veloce, altre volte, faccio una chiamata a Foo e ci vuole sempre. Non sono un uomo paziente, se Foo ci vorrà per sempre, voglio fermare l'esecuzione di Foo e non chiamarlo con quegli argomenti.È possibile creare un thread del timer del watchdog del software in C++ utilizzando i segnali Boost2 e Thread?
Qual è il modo migliore per chiamare Foo in modo controllato (il mio ambiente corrente è POSIX/C++) in modo tale da poter interrompere l'esecuzione dopo un certo numero di secondi. Sento che la cosa giusta da fare qui è creare un secondo thread per chiamare Foo, mentre nel mio thread principale creo una funzione timer che alla fine segnalerà il secondo thread se si esaurisce il tempo.
Esiste un altro modello più adatto (e una soluzione)? In caso contrario, la libreria e le discussioni di Boost's Signals2 faranno il trucco?
solo per chiarire, 'timed_join' * non * fermare la' Foo() 'esecuzione del thread se viene raggiunto il timeout, come ho pensato Aron aveva chiesto per. Invece, il chiamante saprà semplicemente che il thread 'Foo()' era ancora in esecuzione quando è stato raggiunto il timeout. – pilcrow