将在下一节详细介绍。
9.3 线程的cāo作
本小节介绍Windows 线程的cāo作方法,包括线程的创建、线程的管理、线程的同步、线
程的终止等。
9.3.1 线程的创建
线程的创建方法有3 种,分别介绍如下:
1.调用Win32API 函数CreateThread 和CreateRemoteThread
(1)CreateThread
函数CreateThread 用来创建线程。如果调用成功则返回非0,否则返回0。它的函数原型
如下:
HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes,
SIZE_T dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress,
LPVOID lpParcomter,
DWORD dwCreationFlags,
枫叶文学网www.fywxw.com
第9 章 多线程
·209·
LPDWORD lpThreadId
);
函数中主要参数的意义如下:
? lpThreadAttributes:指向SECURITY_ATTRIBUTES结构的指针,决定返回的句柄是否
可以被继承。
? dwStackSize:设定堆栈的大小。
? lpStartAddress:线程函数的名称,它的参数是第4 个参数。
? lpParcomter:线程函数的参数。
? dwCreationFlags:线程创建标志。如果是CREATE_SUSPENDED,则线程的初始状态
为挂起,直到调用了RescomThread 才开始执行,如果为0,线程创建后即开始执行。
? lpThreadId:存放线程标志的变量指针。
(2)CreateRemoteThread
函数CreateRemoteThread 用来创建在另外一个进程的虚拟空间中执行的线程,它的函数
原型如下:
HANDLE CreateRemoteThread(
HANDLE hProcess,
LPSECURITY_ATTRIBUTES lpThreadAttributes,
SIZE_T dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress,
LPVOID lpParcomter,
DWORD dwCreationFlags,
LPDWORD lpThreadId
);
函数中主要参数的意义如下。
? hProcess:进程的句柄。
? lpThreadAttributes:指向SECURITY_ATTRIBUTES结构的指针,决定返回的句柄是否
可以被继承。
? dwStackSize:设定堆栈的大小。
? lpStartAddress:线程函数的名称,它的参数是第四