I recently ran across the need to spawn a thread and wait for it to finish its setup before continuing. The accepted answer seems to be using a mutex and condition variable to achieve this. However that work clutters up the code quite a bit with the implementation details. I came across Java's CountDownLatch which does basically the same work but bundles it up into a tidy package. It seems to be a fairly trivial but useful abstraction. implementation: http://codepad.org/E8kd2Eb8 usage: class widget { public: widget() : latch( 1 ) , thread_( [&]{ thread_func(); } ) { latch.wait(); } private: void setup(); void run(); void thread_func() { setup(); latch.count_down(); run(); } countdown_latch latch; std::thread thread_; };