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