Завершение процесса

Процесс можно завершить четырьмя способами:

  • входная функция первичного потока возвращает управление (рекомендуемый способ),
  • один из потоков процесса вызывает функцию ExitProcess (нежелательный способ);
  • поток другого процесса вызывает функцию TerminateProcess (тоже нежелательно);
  • все потоки процесса умирают по своей воле (большая редкость).

Рассмотрим только что перечисленные способы завершения процесса, а также, что на самом деле происходит в момент его окончания.

Возврат управления входной функцией первичного потока

Приложение следует проектировать так, чтобы его процесс завершался только после возврата управления входной функцией первичного потока. Это единственный способ, гарантирующий корректную очистку всех ресурсов, принадлежавших первичному потоку. При зтом:

  • любые С++-объекты, созданные данным потоком, уничтожаются соответствующими деструкторами;
  • система освобождает память, которую занимал стек потока;
  • система устанавливает код завершения процесса (поддерживаемый объектом ядра «процесс») — его и возвращает входная функция;
  • счетчик пользователей данного объекта ядра «процесс» уменьшается на единицу.

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: