- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统实验指导书0140401,操作系统实验指导书,信号与系统实验指导书,监控系统操作指导书,作业指导书系统,系统集成作业指导书,系统运维作业指导书,系统安装作业指导书,防排烟系统作业指导书,系统运行管理指导书
《操作系统原理》
实验指导书
东华大学 计算机学院
版本号:V2014
修改日期:2014.0.01
实验一 线程创建与撤销
1.1实验目的
深入理解线程与进程的概念,熟悉在Windows环境下何时使用进程,何时使用线程。
1.2 实验内容
(1)熟悉VC++、Visual Studio开发环境。
(2)使用相关函数创建和撤销线程。
(3)在一个进程中创建3个线程,名字分别为threada、threadb、threadc。
threada输出“hello world! ”。
threadb输出“My name is …”。
threadc输出“Please wait…”,然后sleep 5秒钟,接着输出“I wake up”。
1.3 预备知识
1.3.1开发环境
Visual C++是基于Windows平台的可视化集成开发环境,和Visual Basic等其他软件一起构成了Visual Studio程序设计软件包。Visual C++提供了Win32控制台程序,通过几个标准的输入输出流进行程序与用户的交互。MSDN为使用微软程序设计语言及其开发工具的开发者提供了大量的技术资料。
1.3.2创建线程
函数功能:
该函数创建一个在调用进程的地址空间中执行的线程。
函数原型:
HANDLE CreateThread
LPSECURITY_ATTRIBUTES lpThreadAttributes,
DWORD dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress,
LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId ;
参数说明指向一个SECURITYATTRIBUTES结构,该结构决定了返回的句柄是否可被子进程继承。若lpThreadAttributes为NULL,则句柄不能被继承。
在WindowsNT中该结构的lpSecurityDescriptor成员定义了新进程的安全性描述符。若为NULL,则线程获得一个默认的安全性描述符。
dwStackSize定义原始堆栈提交时的大小 按字节计 。系统将该值舍人为最近的页。若该值为0,或小于默认时提交的大小,默认情况是使用与调用线程同样的大小。更多的信息,请看TeadStackSize。
lpStartAddss:指向一个LPTHREADSTART_ROUTlNE类型的应用定义的函数,该线程执行此函数。该指针还表示溃程进程中线程的起始地址。该函数必须存在于远程进程中。
lpParameter:定义一个传递给该迸程的32位值。
dwCreationFIags:定义控制进程创建的附加标志。若定义了CREATESUSPENDED标志,线程创建时处于挂起状态,并且直到ResumeThread函数调用时d能运行。若该值为0,则该线程在创建后立即执行。
lpThreadId:指向一个32位值,它接收该线程的标识符。
返回值若函数调用成功,返回值为新线程的句柄若函数调用失败,返回值为NULL。
备注新进程的句柄创建时设为THREAD ALL_ACCESS访问权限。若未提供安全性描述符,该
线程从参数说明定义的函数处开始执行。若该函数返回,系统将默认地认为以调用ExitThread函数的方法终止该线程。使用GetExitCodeThread函数来获得线程的返回值。
线程创建时拥有THREADPRIORITY_NORMAL优先权。使用GetThreadPriority和SetreadPriority函数可以获得和设置线程的优先权值。
一个线程终止时,该线程对象被设为发信号状态,以满足在该对象上等待的所有进程。
一个线程对象始终存在于系统中,直到该线程终止,且它所有的句柄都已通过调用
函数功能
函数原型:
VOID ExitThread DWORD dwExitCode ;
参数说明
dwExitCode:定义调用线程的退出代码。使用GetExitCodeThread函数来检测一个线程的退出代码。
返回值无。 备注调用ExitThread函数,是结束一个线程的较好的方法。调用该函数后 或者直接地调用,或 ,当前线程的堆栈取消分配,线程终止。若调用该函数时,该线程为进
线程对象的状态变为发信号状态,以释放所有正在等待该线程终止的其他线程。线程的终止STILL_ACTIVATE变为dwExitCode参数说明的值。
线程结束时不必从操作系统中移去该线程对象。当线程的最后一个句柄关闭时,该线程对象
1.3.4终止线程
函数:
在线程外终止一个线程,用于强制终止线程。
函数声明
BOOL TerminateThread HANDLE hThread, DWORD
文档评论(0)