Азбука программирования в Win32 API


Азбука программирования в Win32 API - стр. 193


код завершения потока инициализируется значением STILL_ACTIVE;

создается структура типа CONTEXT для потока (к сожалению, я не могу описать структуру в рамках этой книги - она слишком велика, но рекомендую читателю самостоятельно разобраться с ней по заголо­вочным файлам и файлам системы помощи);

создается стек потока;

инициализируется регистр - указатель стека в структуре типа CONTEXT так, чтобы он указывал на верхнюю границу стека, а регистр -указатель команд - на точку входа функции потока.

Рассмотрим аргументы этой функции.

АРГУМЕНТЫ ФУНКЦИИ CREATETHREADQ

Первый аргумент - IpThreadAttnbutes - является указателем на струк­туру типа SECURITY_ATTRIBUTES. Так как в Windows'95 атрибуты безопасности не используются, то обычно этот аргумент равен NULL.

Второй аргумент - dwStackSize - определяет размер выделяемого по­току стека. Если в качестве этого параметра указан 0, то поток будет иметь стек такого же размера, как и у породившего его потока.

Третий аргумент этой функции - IpStartAddress - собственно и опреде­ляет поток, так как является адресом точки входа функции потока. Функ-

232

ция потока может иметь имя, определяемое программистом, но должна иметь следующий прототип:

DWORD WINAPI ThreadFunctionfLPVOID IpParameter);

Я не случайно дал аргументу этой функции и четвертому аргументу функции CreateThreadQ одинаковые имена. Четвертый аргумент функции CreateThreadQ - это параметр, передаваемый функции потока. Что и каким образом передается в этом параметре, совершенно неважно. Это могут быть всевозможные данные, которые функция потока может использовать для своей работы.

Если следующий аргумент - dwCreationFlags - равен нулю, то выпол­нение потока начнется немедленно. Если этот аргумент будет равен CREATE_SUSPENDED, то начало выполнение потока будет задержано до определенных событий, например, до вызова функции ResumeThreadQ.

И наконец, в значение, определяемое последним аргументом, IpThreadld, записывается идентификатор созданного потока. А значение, возвращаемое функцией, является хэндлом этого потока.




Начало  Назад  Вперед



Книжный магазин