Время жизни объекта boost::thread
и время жизни собственного потока не связаны.boost::thread
объект может выйти из области видимости в любое время.
Из boost::thread
class документации
Так же, как время жизни файла можетотличаться от времени жизни объекта iostream, который представляет файл, время жизни потока выполнения может отличаться от времени жизни объекта потока, который представляет поток выполнения.В частности, после вызова метода join () поток выполнения больше не будет существовать, даже если объект потока продолжает существовать до конца своего обычного времени жизни.Обратное также возможно;если объект потока уничтожается без вызова функции join (), поток выполнения продолжается до тех пор, пока не завершится его начальная функция.
Редактировать : если вам просто нужно запуститьнить и никогда не вызывать join
, вы можете использовать конструктор потока как функцию:
// Launch thread.
boost::thread(&do_work);
Однако я не советую вам делать это, даже если вы думаете, что уверены, что поток завершитсядо main()
делает.