проверка на действительные темы - PullRequest
0 голосов
/ 07 апреля 2011

Если у вас есть сохраненный идентификатор потока (полученный с помощью функции boost :: thread :: get_id ()), как вы можете проверить, работает ли этот поток в данный момент?

Ответы [ 3 ]

1 голос
/ 07 апреля 2011
if (thread->joinable() && ! thread->timed_join(**zero_time here**)) {
  /* still running */
} else {
  /* not running */
}
1 голос
/ 07 апреля 2011

Вы не можете сделать это, по крайней мере, не переносимо.

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

1 голос
/ 07 апреля 2011

Не знаю, поможет ли это, но если вы сохраните указатель на boost :: thread, вы можете запросить boost :: thread :: joinable ?

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