Процессы и потоки
Приложение состоит из одного или нескольких процессов. Процесс (process), в самых простых терминах, является исполняемой программой. В контексте процесса работает один или несколько потоков. Потоки (thread) - основные модули программы, среди которых операционная система распределяет процессорное время. Поток может выполнять любую часть кода процесса, включая части, в настоящее время выполняемые другим потоком. Нить (fiber) - секция исполняемого кода, для которой должна быть вручную установлена очередность обслуживания прикладной программой. Нити работают в среде потоков, которые устанавливают очередность их обслуживания.
Объект задания (job object) позволяет управлять группой процессов как модулем программы. Объекты задания – это именованные, защищенные, совместно используемые объекты, которые управляют атрибутами процессов, связанных с ними. Операции, выполненные на объекте задания, затрагивают все процессы, связанные с объектом задания.
О процессах и потоках
Каждому процессу предоставляются ресурсы необходимые, чтобы выполнить программу. Процесс имеет виртуальное адресное пространство, выполняемый код, данные, дескрипторы объектов, системные переменные, основной приоритет и установку минимального и максимального рабочего размера. Каждый процесс начинается с единственного потока, часто называемого первичным потоком (primary thread), но он может создать дополнительные потоки из любого своего потока.
Все потоки процесса совместно используют свое виртуальное адресное пространство и системные ресурсы. Кроме того, каждый поток поддерживает обработчики особых ситуаций, приоритет диспетчеризации и набор структур, которые система будет использовать, чтобы сохранять контекст потока до тех пор, пока он не будет обслужен.
Функции процесса
Функции |
Описание |
CreateProcess |
Создает новый процесс и его первичный (главный) поток. |
ExitProcess |
Завершает процесс и все его потоки. |
GetStartupInfo |
Извлекает состав структуры STARTUPINFO , которая была определена, когда создавался вызывающий процесс. |
OpenProcess |
Открывает существующий объект процесса. |
TerminateProcess |
Завершает работу заданного процесса и все его потоки. |
Функции потока
Нижеследующие функции используются с потоками.
Функции |
Описание |
CreateThread |
Создает поток, который исполняет код в пределах виртуального адресного пространства вызывающего процесса. |
ExitThread |
Завершает работу потока. |
SuspendThread |
Приостанавливает выполнение заданного потока. |
TerminateThread |
Завершает работу потока. |
CreateProcess(NULL,
"child", // командная строка
NULL, // атрибуты защиты процесса
NULL, // атрибуты защиты первичного потока
TRUE, // дескрипторы наследуемые