Итак, когда поток ожидает объекта в ядре, он не завершит работу, пока не закончится ожидание.
Итак, допустим, у вас есть приложение с 3 потоками в следующих состояниях:
- Основной поток, в настоящее время бездействующий
- Поток обработки пользовательского интерфейса, в настоящее время бездействующий
- Поток, ожидающий объекта ядра
Если выпри завершении процесса поток 2 умрет, из-за чего умрут обработчики ввода пользовательского интерфейса и, следовательно, появится впечатление, что приложение не отвечает (зависает).До тех пор, пока поток № 3 не завершит ожидание в ядре, основной поток не завершится, и поэтому процесс продолжает работать, а ресурсы процесса не освобождаются.
Итак, я думаю, что в основном говорится, что этолучше попросить процесс выйти нормально, вместо того, чтобы посылать ему сигнал уничтожения, потому что вы можете попасть в ситуацию, подобную описанной, если какой-либо из потоков процесса ожидает объекты ядра.