Процессы и потоки
Процесс - это выполняющееся приложение Windows. Так как Windows - многозадачная операционная система, то в ней может работать сразу несколько процессов. Каждый процесс получает свое адресное пространство (размером до 4-х гигабайт). В этом пространстве хранится код приложения, его данные, а также все подключаемые библиотеки (DLL).
Сами процессы ничего не выполняют. Каждый процесс состоит из потоков (threads), которые выполняют код процесса (подробнее о потоках и об их создании см. главу 3). Любой процесс состоит как минимум из одного потока, который называется первичным или главным потоком (primary thread). Процесс может состоять из нескольких потоков, только один из которых будет главным.
Поток - это объект операционной системы, который представляет собой часть кода, находящегося внутри некоторого процесса. .
При создании процесса операционная система создает его главный поток, который может генерировать дополнительные потоки. При этом каждому потоку процесса Windows выделяет свои кванты времени процессора, в зависимости от приоритета потока.
Для работы с процессами Win32 API имеет встроенные функции, перечисленные в табл. 1.9.
Таблица 1.9. Функции Win32 API для работы с процессами
Функция Win32 АРI |
Предназначение |
||
CreateProcess |
Создает новый процесс и его главный поток. Используется вместо функции Windows 3.1 winExec. При помощи данной функции можно запускать приложения |
||
ExitProcess |
Завершение выполнения процесса и всех его потоков |
||
GetCurrentProcess |
Возвращает псевдодескриптор текущего процесса. Настоящий дескриптор текущего процесса можно получить С ПОМОЩЬЮ функции DuplicateHandle |
||
DuplicateHandle |
Функция, предназначенная для создания копии объекта ядра |
||
GetCurrentProcess ID |
Возвращает идентификатор текущего процесса. Данный идентификатор уникален для каждого процесса операционной системы |
||
GetExitCodeProeess |
Получение статуса окончания процесса |
||
GetPriorityClass |
Возвращает класс приоритета для конкретного процесса |
||
GetStartupInfo |
Возвращает содержимое структуры TStartupinfo,
которая создается во время создания процесса |
||
OpenProcess |
Возвращает дескриптор процесса по его идентификатору |
||
SetPriorityClass |
Устанавливает класс приоритета для конкретного процесса |
||
TerminateProcess |
Прекращение выполнения процесса и всех его потоков |
||
WaitForInput Idle |
Перевод процесса в режим ожидания ввода |
||