Zombie Threads в системах POSIX - PullRequest
5 голосов
/ 08 августа 2011

Как зомби-потоки формируются в C / C ++, и что вам нужно сделать, чтобы предотвратить их создание? Я знаю, что это просто нормальные потоки, которые не заканчиваются должным образом, но я немного неясен по поводу специфики.

Ответы [ 2 ]

18 голосов
/ 08 августа 2011

Поток зомби - присоединяемый поток, который завершился, но который не присоединился Обычно любой поток должен быть присоединен к время, или оно должно быть отсоединено. В противном случае ОС сохраняет свое состояние для возможного будущего присоединения, которое требует ресурсов.

5 голосов
/ 08 августа 2011

Вы имеете в виду pthreads или процессы зомби?Процесс зомби (не нить) создается, когда родитель не пожинает своего потомка.Это потому, что ОС сохраняет возвращаемое состояние процесса, если родительский нужен позже.Если родитель умирает, дочерний элемент передается потоку инициализации, который просто сидит и снова и снова вызывает «wait» (пожиная всех умирающих потомков).Таким образом, процесс зомби может быть создан только тогда, когда родитель еще жив, а потомок завершен.

То же самое относится к pthreads.Если вы отсоедините поток, он не будет сохранять это состояние завершения процесса после его завершения (аналогично процессам).

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