
That all makes sense and seemed to fix the problem. Thanks for the fast reply. -Rob Yull From: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org] On Behalf Of Craig Henderson Sent: Wednesday, July 29, 2009 10:47 AM To: boost-users@lists.boost.org Subject: Re: [Boost-users] Race condition with Boost::Thread 2009/7/29 Craig Henderson <cdm.henderson@googlemail.com> class WorkerThread { public: typedef boost::function<void ()> JobType; WorkerThread() { m_Thread = boost::thread(boost::bind(&WorkerThread::run, boost::ref(this))); } ~WorkerThread() { while (!m_Running) ; m_Thread.join(); m_Running = false; } const bool isRunning() const { return m_Running; } private: volatile bool m_Running; boost::thread m_Thread; void run() { m_Running = true; BOOST_ASSERT(isRunning()); } private: WorkerThread(const WorkerThread& rhs); WorkerThread& operator = (const WorkerThread& rhs); }; Regards -- Craig You need to initial m_Running=false; in the ctor, too. -- Craig