- 1、本文档共179页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章 windows的进程管理
2.1 实验一:线程的创建与撤销
2.1.1 实验目的
(1)熟悉windows系统提供的线程创建与撤销系统调用.
(2)掌握windows系统环境下线程的创建与撤销方法.
2.1.2 实验准备知识
1.线程的创建
CeateThread()完成线程的创建.它在调用进程的地址空间上创建一个线程,执行指定的函数,并返回新建立的线程的句柄.
原型:
HANDLE CeateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes,
DWORD dwStackSize,
LPSECURITY_START_ROUTINE lpStartAddress,
LPVOID lpparameter,
DWORD dwCreationFlags,
LPDWORD lpThreadId
);
参数说明:
(1)lpThreadAttributes:为线程指定安全属性.为NULL时,线程得到一个默认的安全描述符.
(2)dwStackSize:线程堆栈的大小.其值为0时,其大小与调用该线程的线程堆栈大小相同.
(3)lpStartAddress:指定线程要执行的函数.
(4)lpparameter:函数中要传递的参数.
(5)dwCreationFlags:指定线程创建后所处的状态.若为CRRATE_SUSPENDED,表示创建后出于挂起状态,用ResumeThread()激活线程才可以执行.若该值为0,表示线程创建后立即执行.
(6)lpThreadId:用一个32位的变量接受系统返回的线程标识符.若该值设为NULL,系统不返回线程标识符.
返回值:
如果线程创建成功,将返回线程的句柄;如果失败,系统返回NULL,可以调用函数GetLastError查询失败的原因.
用法举例:
static HANDLE hHandle1=NULL; //用于存储线程返回句柄的变量
DWORD dwThreadID1; //用于存储线程标识符的变量
//创建一个名为ThreadName1的线程
hHandle1=CeateThread((LPSECURITY_ATTRIBUTES)) NULL
0,
(LPSECURITY_START_ROUTINE)ThreadName1,
(LPDWORD)NULL,
0,dwThreadID1);
2.撤销进程
ExitThread()用于撤销当前进程.
原型:
VOID ExitThread(
DWORD dwExitCode); //线程返回码
参数说明:
dwExitCode:指定线程返回码,可以调用GetExitCodeThread()查询返回码的含义.
返回值:
该函数没有返回值.
用法举例:
ExitThread(0); //参数0表示要撤销进程中的所有线程
3.终止线程
TerminateThread()用于终止当前线程.该函数与ExitThread()的区别在于,ExitThread()在撤销线程时将该线程所拥有的资源全部归还给系统,而TerminateThread()不归还资源.
原型:
BOOL TerminateThread(
HANDLE hHandle, //线程句柄
DWORD dwExitCode); //线程返回码
参数说明:
(1)hThread:要终止线程的线程句柄.
(2)dwExitCode:指定线程返回码,可以调用GetExitCodeThread()查询返回码的含义.
返回值:
函数调用成功,将返回一个非0值;若失败,返回0,可以调用函数GetLastError()查询失败的原因.
4.挂起线程
Sleep()用于挂起当前正在执行的线程.
原型:
VOID Sleep(DWORD dwMilliseconds);
参数说明:
dwMilliseconds;指定挂起时间,单位为ms(毫秒).
返回值:
该函数没有返回值.
5.关闭句柄
函数CloseHandle()用于关闭已打开的对象的句柄,其作用与释放动态申请的内存空间类似,这样可以释放系统资源,使线程安全运行.
原型:
BOOL CloseHandle(HANDLE hObject);
参数说明:
hObject:已打开对象的句柄.
返回值:
如果函数调用成功,则返回值为非0值;如果函数调用失败,则返回值为0.若要得到更多的错误信息,调用函数GetLastError()查询.
2.1.3实验内容
使用系统调用CreatThread()创建一个子线程,并在子线程中显示;Thread is Running!.为了能让用户清楚地看到线
文档评论(0)