Как я могу сказать надежно, если поток повышения вышел из своего метода выполнения?

Нет, Вы не делаете. Каждый программист все еще получает точно одну зарплату.

Вы думаете, что Ваши программисты не будут говорить друг с другом, если Вы не назовете его "программированием пары"? Вы думаете, программируя, совершенно parallelizable?

33
задан JeffV 3 November 2009 в 13:45
поделиться

3 ответа

Поскольку вы можете присоединиться к потоку даже после его завершения, joinable () по-прежнему будет возвращать значение true, пока вы не вызовете join () или detach (). Если вы хотите знать, выполняется ли все еще поток, вы должны иметь возможность вызвать timed_join с временем ожидания 0. Обратите внимание, что это может привести к состоянию гонки, поскольку поток может завершиться сразу после вызова.

31
ответ дан 27 November 2019 в 18:34
поделиться

Используйте thread :: timed_join () с минимальным таймаутом. Он вернет false, если поток все еще запущен.

Пример кода:

thread_->timed_join(boost::posix_time::seconds(0));
6
ответ дан 27 November 2019 в 18:34
поделиться

Вы в принципе не можете этого сделать. Причина в том, что есть два возможных ответа: «Да» и «Не когда я смотрел в последний раз, но, возможно, сейчас». Нет надежного способа определить, что поток все еще находится внутри своего метода выполнения, даже если существовал надежный способ определить обратное.

2
ответ дан 27 November 2019 в 18:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: