- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统实验指导书20140401概要1
《操作系统原理》
实验指导书
东华大学 计算机学院
版本号: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参数说明的值。
线程结束时不必从操作系统中移去该线程对象。当线
您可能关注的文档
最近下载
- 尼尔森IQ:2025年零售渠道变革-破局增长报告.pptx VIP
- 智能烟厂规划方案-最新版.docx VIP
- 2024年全球智能手持影像设备市场发展白皮书.pdf VIP
- 循势演进 重塑增长:2025中国快消市场发展趋势.pptx VIP
- 循势演进 重塑增长——2025中国快消市场发展趋势报告.docx VIP
- 工厂智能化设计规范.pdf VIP
- 企业工会助推企业高质量发展.docx VIP
- 全国优质课一等奖人教版初中九年级物理《变阻器》赛课课件.ppt VIP
- 全国优质课一等奖初中九年级物理《变阻器》教学设计.doc VIP
- 2025届高考物理复习:经典好题专项(动态平衡问题)练习(附答案).pdf VIP
文档评论(0)