Вопрос про зомби-процессы и темы - PullRequest
6 голосов
/ 08 октября 2010

У меня были эти вопросы в голове, так как я читал некоторые новые темы о процессах и потоках.Я был бы рад, если бы кто-нибудь смог мне помочь.

1) Что произойдет, если поток помечен как не подлежащий отмене, а затем процесс прерван внутри критической секции?

2) Мыесть основной поток для программы, которая известна операционной системе?я имею в виду, дает ли операционная система первому потоку программы какие-то полезные права или что-то в этом роде?

3) Когда мы убиваем процесс, а потоки не объединяются, они становятся зомби?

1 Ответ

5 голосов
/ 08 октября 2010

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

1) Если под неотменяемым подразумевается отсоединение, то же самое, что и присоединенная нить. Вы не знаете, какой беспорядок вы оставляете, если убиваете его вслепую.

2) С точки зрения уровня приложения главное, что если основной поток завершает работу () или возвращает (), то он удаляет все остальные потоки вместе с ним. Если основной поток завершает себя с помощью pthread_exit (), остальные потоки продолжаются.

3) Во многом как процесс поток будет сохранять некоторые ресурсы до тех пор, пока он не будет собран (присоединен) или программа не завершится, если она не была запущена как отдельная.

RE Примечание: потоки не разделяют стек, каждый из которых имеет свой собственный. См. clone () для получения дополнительной информации о создании потока.

...