实验目的
(1)掌握Windows系统提供的线程创建与撤销系统调用
(2)掌握Windows系统环境下线程的创建与撤销方法
2 实验准备知识
(1)线程创建
CreateThread()完成线程的创建。它在调用进程的地址空间上创建一个线程,执行指定的函数,并返回新建立线程的句柄。
原型:
HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes,
DWORD dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress,
LPVOID lpParameter,
DWORD dwCreationFlags,
LPDWORD lpThreadId);
参数说明:
lpThreadAttributes:指向SECURITY_ATTRIBUTES型态的结构的指针。在Windows 98中忽略该参数。在Windows NT中,它被设为NULL,表示使用缺省值。
dwStackSize,线程堆栈大小,一般=0,在任何情况下,Windows根据需要动态延长堆栈的大小。
lpStartAddress,指向线程函数的指针,形式:@函数名,函数名称没有限制,但是必须以下列形式声明:
DWORD WINAPI ThreadProc (LPVOID pParam) ,格式不正确将无法调用成功。
lpParameter:向线程函数传递的参数,是一个指向结构的指针,不需传递参数时,为NULL。
dwCreationFlags :线程标志,可取值如下
CREATE_SUSPENDED: 创建一个挂起的线程
0 :创建后立即激活。
lpThreadId:保存新线程的id。
返回值:
函数成功,返回线程句柄;函数失败返回false。
(2)撤销线程
ExitThread()用于撤销当前线程
原型:
VOID ExitThread(
DWORD dwExitCode
);
参数说明:
DwExitCode:指定线程返回码
返回值:
该函数没有返回值
用法举例:
ExitThread(0);
(3)挂起线程
Sleep()用于挂起当前正在执行的线程
原型:
VOID Sleep(
DWORD dwMilliseconds
);
参数说明:
dwMilliseconds:指定挂起时间,单位为ms(毫秒)。
返回值:
该函数没有返回值。
(4)关闭句柄
函数CloseHandle()用于关闭已打开对象的句柄,其作用与释放动态申请的内存空间类似,这样可以释放系统资源,使进程安全运行。
原型:
BOOL CloseHandle(
HANDLE hObject
);
参数说明:
hObject:已打开对象的句柄。
返回值:
成功,返回值为非0值;失败,则返回值为0.
1