2015-01-25 3 views
2

Разве нить умирает, как только я убью программу, которая начала ее?Происходит ли нить, когда ее родитель мертв?

Вероятно, это связано с моим английским, но я не мог найти его здесь:

https://docs.python.org/2/library/threading.html

+0

Этого не может быть, потому что он вообще не связан с python. Когда вы убиваете программу/процесс, ОС освобождает все связанные с ними ресурсы. –

+1

Вместо этого вы должны обратиться к основным [thread] (https://docs.python.org/2/library/thread.html) документам, в котором говорится: «Когда основной поток завершается, определяется система, выживают ли другие потоки , В SGI IRIX с использованием встроенной реализации потока они выживают. На большинстве других систем они убиваются без выполнения попыток ... наконец, клаузулы или выполнение объектов-деструкторов. ' – georg

+0

Спасибо, georg очень оценен –

ответ

2

Да, когда процесс killed (например, отправив его SiGKILL), все нити расторгнуть.

Стоит отметить, что это не относится к Python.

+4

Как примечание стороны. Это не относится к Python, но в целом, если родитель закрыт, то его потоки также закрываются. С вилками - это еще одна проблема. –

+0

Извините, но это мусор. Только начальная нить процесса является специальной, все остальные равны, и в частности нет отношения родитель-потомок между потоками. Кроме того, даже поведение, когда начальная нить завершается, не является согласованной между системами, как упомянуто выше. Если вы хотите сказать, что завершение процесса связано с убийством всех его потоков, то это правда, но это совсем другое дело. –

+0

@UlrichEckhardt: Подождите, какая часть этого мусора? Весь мой ответ заключается в том, что он убивает процесс (например, отправив его ['SIGKILL'] (http://en.wikipedia.org/wiki/Unix_signal#SIGKILL)), все его потоки прекращаются. Какая часть этого противоречива? – NPE

2

Кажется, что this is the part of the documentation you're looking for, и в нем говорится:

Когда основной поток выходит, это система, определена ли выжить другие потоки. В SGI IRIX с использованием встроенной реализации потока они выживают. В большинстве других систем они убиваются без выполнения попыток ... finally клаузулы или выполнение деструкторов объектов.

Так что это не то, что Python не определяет - он может варьироваться в зависимости от конкретной ОС.

Смежные вопросы