Как pthread_exit останавливает выход из потока до завершения назначенной ему задачи? - PullRequest
1 голос
/ 11 января 2012

pthread_exit при размещении в main () до return 0; останавливает выход из потока до завершения назначенной ему задачи.

Я хочу понять причины подробно .

Я поместил цикл while в функцию, над которой должен был работать поток. Условие в то время не удовлетворяло, и все же программа прекратилась. Когда я помещаю pthread_exit в main перед возвратом 0, цикл while завершает свою задачу. Отсюда вопрос.

ОС: Linux

1 Ответ

3 голосов
/ 11 января 2012

Возврат из main() с оператором возврата эквивалентен вызову exit() --- он завершает процесс, не ожидая завершения других потоков.

Вызов pthread_exit() просто завершает поток, которыйвызывает его (даже если этот поток выполняет main()), поэтому другие потоки будут работать до тех пор, пока какой-либо поток не вызовет exit() (или другую функцию, которая завершает процесс, например abort()), или каждый поток имеетвышел.

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