#include "stdafx.h" class ThreadsTest { public: void testThreads() { while (!mIsInterrupted) { { boost::recursive_mutex::scoped_lock _lock1(m_CsQueuedItems); boost::chrono::time_point untilTime(boost::chrono::steady_clock::now() + boost::chrono::milliseconds(500)); m_EvQueuedItems.wait_until(_lock1, untilTime); } } } void runThread() { mIsInterrupted=false; { boost::recursive_mutex::scoped_lock _lock1(m_CsQueuedItems); boost::thread newThread(boost::bind(&ThreadsTest::runThread, this)); } boost::this_thread::sleep_for(boost::chrono::milliseconds(1000)); mIsInterrupted=true; boost::this_thread::sleep_for(boost::chrono::milliseconds(1000)); } private: boost::recursive_mutex m_CsQueuedItems; boost::condition_variable_any m_EvQueuedItems; bool mIsInterrupted; }; int main(int argc, char* argv[]) { cout << "Starting test" << endl; ThreadsTest test; test.testThreads(); cout << "Ending test" << endl; return 0; }