В эти дни я читаю pdf Проектирование MT-программ. В нем объясняется, что пользователь ДОЛЖЕН явным образом вызывать detach() для объекта класса std::thread в С++ 0x до того, как этот объект выходит из области видимости. Если вы его не назовете, будет вызван std::terminate(), и приложение умрет.
Обычно я использую boost::thread для потоковой обработки в С++. Исправьте меня, если я ошибаюсь, но объект boost::thread автоматически отделяется, когда он выходит из области видимости.
Мне кажется, что подход с усилением следует принципу RAII, а std - нет.
Знаете ли вы, есть ли какая-то особая причина для этого?