
Hi Anthony, It should be great if the Thread library documentation included a History section and include the changes since 1.35 that we can already found in the Version 1.36.0 page (http://beta.boost.org/users/news/version_1_36_0) The create_thread interface evolution is not present in the doc. Replace thread* create_thread(const function0<void>& threadfunc); by template<typename F> thread* create_thread(F threadfunc); BTW, as you have enhanced the interface for the thread construction template <class F,class A1,..., class An> thread(F f,A1 a1,..., An an); why not to apply the same schema to the create_thread function of the thread_group class? Just one minor sugestion: The guard on the create_thread function should be declared after the thread creation to limit the scope of the mutex lock. template<typename F> thread* create_thread(F threadfunc) { std::auto_ptr<thread> new_thread(new thread(threadfunc)); { boost::lock_guard<mutex> guard(m); threads.push_back(new_thread.get()); } return new_thread.release(); } Reading the code we see that the thread_group class is thread safe using an internal mutex. Is this is part of the contract it is not documented? In addition an application creating/adding all the threads of a group in one thread do not needs this thread safety. Following the C++ phylosophy "don't pay for what you don't use", should't this class be parameterized by a synchronization policy. Best, Vicente