
On May 28, 2008, at 11:09 AM, Stefan Seefeld wrote:
Anthony Williams wrote:
"vicente.botet" <vicente.botet@wanadoo.fr> writes:
just a question that could clarify my thoughts, can a non joinable thread be interruptible?
No, because you no longer have a handle with which to interrupt it.
I have thought about providing an "interrupt handle" which you can obtain either from a boost::thread object, or by calling boost::this_thread::get_interrupt_handle() or similar, in which case a detached thread would be interruptible.
But why do you invalidate the thread object after a call to detach ? Why is it impossible to refer to a detached thread ? (And, for that matter, why can't a default-constructed thread not simply refer to the 'main' thread ?)
Why do we have unreferrable (sp?) threads of execution ?
Because when a thread is detached, you can not reliably query it for things such as it's id. You don't know whether the detached thread is still running or not. Perhaps it has terminated, and another thread has been launched and was assigned the same id. If you need to refer to a thread (via a std::thread), just don't detach it. If you want, you can arrange other communication mechanisms with a thread (such as a condition_variable), and then you can detach it and still communicate with it via the cv. -Howard