title: Can I create a software watchdog timer thread in C++ using Boost Signals2 and Threads?
body: <p>I am running function Foo from somebody else's library in a single-threaded application currently.  Most of the time, I make a call to Foo and it's really quick, some times, I make a call to Foo and it takes forever.  I am not a patient man, if Foo is going to take forever, I want to stop execution of Foo and not call it with those arguments.</p>
  
  <p>What is the best way to call Foo in a controlled manner (my current environment is POSIX/C++) such that I can stop execution after a certain number of seconds.  I feel like the right thing to do here is to create a second thread to call Foo, while in my main thread I create a timer function that will eventually signal the second thread if it runs out of time.</p>
  
  <p>Is there another, more apt model (and solution)?  If not, would Boost's Signals2 library and Threads do the trick?</p>