title: thread destructors in C++0x vs boost
body: <p>These days I am reading the pdf <a href="http://www.justsoftwaresolutions.co.uk/files/designing_mt_programs.pdf" rel="noreferrer">Designing MT programs</a> . It explains that the user MUST explicitly call <code>detach()</code> on an object of class <code>std::thread</code> in C++0x before that object gets out of scope. If you don't call it <code>std::terminate()</code> will be called and the application will die.</p>
  
  <p>I usually use <code>boost::thread</code> for threading in C++. Correct me if I am wrong but a <code>boost::thread</code> object detaches automatically when it get out of scope.</p>
  
  <p>Is seems to me that the boost approach follow a RAII principle and the std doesn't. </p>
  
  <p>Do you know if there is some particular reason for this?</p>