Boost Thread не отсоединяется, когда создается как функция-член класса - PullRequest
2 голосов
/ 27 августа 2010

Упрощенная версия моего кода выглядит следующим образом:

class threadCreator
{
   void threadFunction(void){
   // use some private data members and do something.
   }
   void createThread(void){ 
      boost::thread myThread(
                boost::bind(&threadCreator::threadFunction,this));
      myThread.detach();
   }
}

Эта программа ожидает завершения потока, а затем завершает работу, даже если я вызываю метод отсоединения в потоке.Если я удаляю класс и создаю свой поток только в функции, это, кажется, работает как ожидалось.

Я думаю, что это как-то связано с объектом, все еще находящимся в памяти.Однако я изучаю C ++ и не уверен, как решить эту проблему.

1 Ответ

2 голосов
/ 27 августа 2010

Я думаю, что вы что-то упустили, потому что для того, чтобы программа ожидала конца выполнения потока, у вас должен быть .join () где-то в этом объекте потока.Поведение по умолчанию - не ждать окончания выполнения потока.

Нет необходимости вызывать .detach () в потоке, поток все равно будет отсоединен от потока объекта в конце области.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...