POSIX темы и выход из потока - PullRequest
       14

POSIX темы и выход из потока

4 голосов
/ 13 января 2011

у меня две темы, общающиеся между собой;каждый поток использует 'while (1) ..'.Теперь мне нужно разрешить потокам выходить при соблюдении определенного условия и, следовательно, завершить приложение.

Мой вопрос: безопасно ли просто возвращать (NULL) из потока или мне нужно использоватьФункции 'pthread_exit' или 'pthread_join' также существуют?

Ответы [ 2 ]

4 голосов
/ 13 января 2011

Безопасно возвращать нуль из потоковых функций; код, который их ждет, должен быть в порядке.

POSIX говорит о pthread_exit():

Неявный вызов pthread_exit () выполняется, когда поток, отличный от потока, в котором main () был впервые вызван, возвращается из процедуры запуска, которая использовалась для его создания.

Вам нужно что-то дождаться потока с помощью pthread_join(), если поток не был создан с атрибутом detached или позже отключен с помощью pthread_detach().

3 голосов
/ 13 января 2011

Вызов pthread_exit(NULL) и возврат NULL в конце начальной функции потока должны быть эквивалентны.Однако выполнение одного из этих действий приведет к утечке ресурсов.Чтобы избежать этого, необходимо либо вызвать pthread_join в потоке из другого потока, либо перевести поток в отключенное состояние, вызвав для него pthread_detach или установив его в отключенном состоянии перед его созданием.

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