Потоки в Windows

Содержание

Слайд 2

Потоком в Windows называется объект ядра, которому операционная система выделяет процессорное

Потоком в Windows называется объект ядра, которому операционная система выделяет процессорное

время для выполнения приложения.
Каждому потоку принадлежат следующие ресурсы:
код исполняемой функции;
набор регистров процессора;
стек для работы приложения;
стек для работы операционной системы;
маркер доступа, который содержит информацию для системы безопасности.
Слайд 3

В операционных системах Windows различаются потоки двух типов: системные потоки; пользовательские

В операционных системах Windows различаются потоки двух типов:
системные потоки;
пользовательские потоки.
В работающем

приложении различаются потоки двух типов:
рабочие потоки (working threads);
потоки интерфейса пользователя (user interface threads).
Слайд 4

Создается поток функцией createThread, которая имеет следующий прототип: HANDLE CreateThread( LPSECURITY_ATTRIBUTES

Создается поток функцией createThread, которая имеет следующий прототип:
HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes, //

атрибуты защиты
DWORD dwStackSize, // размер стека потока в байтах
LPTHREAD_START_ROUTINE IpStartAddress, // адрес функции
LPVOID lpParameter // адрес параметра
DWORD dwCreationFlags, // флаги создания потока
LPDWORD lpThreadId // идентификатор потока
);
Слайд 5

Слайд 6

Слайд 7

Поток завершается вызовом функции ExitThread, которая имеет следую­щий прототип: VOID ExitThread(

Поток завершается вызовом функции ExitThread, которая имеет следую­щий прототип:
VOID ExitThread(
DWORD dwExitCode //

код завершения потока
);
Один поток может завершить другой поток, вызвав функцию TerminateThread, которая имеет следующий прототип:
BOOL TerminateThread(
HANDLE hThread, // дескриптор потока
DWORD dwExitThread // код завершения потока
);
Слайд 8

Исполнение каждого потока может быть приостановлено вызовом функции suspendThread, которая имеет

Исполнение каждого потока может быть приостановлено вызовом функции suspendThread, которая имеет

следующий прототип:
DWORD SuspendThread(
HANDLE hThread // дескриптор потока
) ;
Эта функция увеличивает значение счетчика приостановок на 1 и, при успешном завершении, возвращает текущее значение этого счетчика. В случае неудачи функция SuspendThread возвращает значение, равное -1.
Слайд 9

Для возобновления исполнения потока используется функция ResumeThread, которая имеет следующий прототип:

Для возобновления исполнения потока используется функция ResumeThread, которая имеет следующий прототип:
DWORD

ResumeThread (
HANDLE hThread // дескриптор потока
Функция ResumeThread уменьшает значение счетчика приостановок на 1 при условии, что это значение было больше нуля. Если полученное значение счетчика приостановок равно 0, то исполнение потока возобновляется, в противном случае поток остается в подвешенном состоянии.
Слайд 10

Поток может задержать свое исполнение вызовом функции sleep, которая имеет следующий

Поток может задержать свое исполнение вызовом функции sleep, которая имеет следующий

прототип:
VOID Sleep(
DWORD dwMilliseconds // миллисекунды
);
Слайд 11

Слайд 12

Слайд 13