
* The N2184::thread is non-copyable like boost::thread, but movable (taking advantage of new C++ language and std::lib features). Movable N2184::thread maintains the one-to-one mapping between the std::thread and the OS thread which boost has (sole ownership semantics). It just adds the ability to move the thread between scopes (such as return from factory functions). I recently drew the analogy this way:
boost::thread is like a scoped_ptr to the OS thread. N2184::thread is like an auto_ptr to the OS thread (the proposed unique_ptr would be a more accurate analogy).
This assumes that it is not desirable for the same N2184::thread object to be shared between multiple owners. The rationale given for the non-copyable semantics of boost::thread states that the only time you need copyable handle is in what they call "Use case 6: Creation of a thread whose ownership is shared between multiple objects", which is like saying that you only need shared handles when you need shared handles (http://www.boost.org/doc/html/threads/rationale.html#threads.rationale.non-c....) I suppose similar argument can be made for movable semantics for N2184::thread, but again, what about this use case? Does N2184 argue that this use case does not exist in practice? Emil Dotchevski