Pthread_exit убивает поток .. Я имею в виду освободить выделенный ему стек? - PullRequest
0 голосов
/ 30 сентября 2011

Я хочу создать много потоков для записи в поток, и после записи я вызываю exit ... Но когда я вызываю exit, освобождаю ли я стек или все еще использую его ??

Ответы [ 2 ]

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

Система выделяет базовое хранилище для каждого потока (идентификатор потока, возвращение потока, стек), и оно будет оставаться в пространстве процесса (и не подлежать повторному использованию) до тех пор, пока поток не завершится и не будет присоединен другими потоками.1001 *

Если у вас есть нить, которая вас не волнует, как нить завершается, и отдельная нить - хороший выбор.Для отдельных потоков система автоматически перезаписывает свои базовые ресурсы после завершения потока.

исходная статья: http://www.ibm.com/developerworks/library/l-memory-leaks/

0 голосов
/ 30 сентября 2011

Чтобы избежать утечек ресурсов, вам необходимо выполнить одно из следующих действий:

  • Убедитесь, что какой-то другой поток вызывает pthread_join () в потоке
  • Создайте поток как «отделенный», что можно сделать, установив соответствующий атрибут pthread в pthread_create, или вызвав функцию pthread_detach ().

Невыполнение этого требования часто приводит к «утечке» всего стека во многих реализациях.

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