Почему завершение задачи в XP/Vista занимает намного больше времени, чем завершение самого процесса? Какова связь между задачей и процессом с точки зрения ОС?
2 ответа
"Задача" - это термин, используемый "Диспетчером задач", чтобы - оправдать свое имя - показать список "главных окон пользовательских процессов"(*), если таковые имеются
"Завершить задачу" дает "задаче" (цикл сообщений для "главного окна") последний шанс отреагировать на сообщение WM_CLOSE и тайм-аут на связанный процесс до завершения. (Http://blogs.msdn.com/oldnewthing/archive/2004/07/22/191123.aspx)
"Завершить процесс" - это грубый процесс TerminateProcess, отбрасывающий все ожидающие изменения в файлах или других ресурсах.
Обычно мини-дамп создается для отчета Microsoft Online Crash Analysis (Dr. Watson), который также может занять секунду или две.
(*) Рэймонд, я знаю, что это так неточно.
Я полагаю, что завершение задачи сначала требует корректного завершения работы программы, тогда как завершение процесса является эквивалентом SIGKILL для Windows - ОС просто выводит процесс без вопросов.