Неверный идентификатор ускоренной темы - PullRequest
0 голосов
/ 02 сентября 2010

У меня есть куча вопросов относительно повышения потока?

  1. Как инициализировать идентификатор ускоряющего потока с помощью конструктора потоков?
  2. Почему идентификатор потока становится недействительным после вызванной функции join ()?
  3. Как обычно, функция-член класса копируется во внутреннее хранилище потока для выполнения функции-члена, но я обнаружил, что кто-то просто инкапсулирует поток поддержки в классе. Каковы цели для этого?

С другой стороны, мы разрешаем наследовать поток повышения? Пожалуйста помоги.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 21 сентября 2010
  1. Вы можете получить идентификатор объекта boost::thread, вызвав его get_id() функцию-член:
boost::thread t(do_something);
boost::thread::id tid=t.get_id();

Вы можете получить идентификатор текущего потока, вызвав boost::this_thread::get_id().

Значения идентификатора потока остаются действительными после завершения потока, в отличие от идентификаторов потоков для некоторых библиотек потоков ОС.

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

Вы можете наследовать от boost::thread, но на самом деле это никуда не приведет, поскольку виртуальных функций нет.

0 голосов
/ 02 сентября 2010

Ответ на вопрос 2: потому что вызывающее соединение ожидает, пока поток не завершится, и станет недействительным.

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