操作系统实验指导书(07)

操作系统实验指导书(07)

ID:47457348

大小:2.58 MB

页数:25页

时间:2020-01-11

操作系统实验指导书(07)_第页
预览图正在加载中,预计需要20秒,请耐心等待
资源描述:

《操作系统实验指导书(07)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、《操作系统》——实验指导书编者:陈洺均桂林电子科技大学信息科技学院二00九年三月实验一Windows线程的创建与撤销一、实验目的1.熟悉Windows系统提供的线程创建与撤销系统调用。2.掌握Windows系统环境下线程的创建与撤销方法。二、实验预备内容(1)阅读Windows源码文件,加深对线程管理概念的理解;(2)CreateThread()调用,创建一个线程;ExitThread()调用,撤销当前线程;TerminateThread()终止线程;Sleep()用于挂起当前正在执行的线程。三、实验内容正确使用CreateThread()、ExitThread(

2、)及Sleep()等系统调用,进一步理解进程与线程理论。用系统调用CreateThread()创建一个子线程,并在子线程序中显示:ThreadisRuning!。为了能让用户清楚地看到线程的运行情况,使用Sleep()使线程挂起5S,之后使用ExitThread(0)撤销线程。运行结果如下图所示:<参考程序 >//ThreadCreate.cpp:Definestheentrypointfortheconsoleapplication.//#include"stdafx.h"#include"ThreadCreate.h"#ifdef_DEBUG#definene

3、wDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////TheoneandonlyapplicationobjectCWinApptheApp;usingnamespacestd;voidThreadName1();staticHANDLEhHandle1=NULL;//用于存储线程返回句柄的变量。DWORDdwThreadID1;//用于存

4、储线程标识符的变量。int_tmain(intargc,TCHAR*argv[],TCHAR*envp[]){intnRetCode=0;hHandle1=CreateThread((LPSECURITY_ATTRIBUTES)NULL,0,(LPTHREAD_START_ROUTINE)ThreadName1,(LPVOID)NULL,0,&dwThreadID1);代码段1//将主线程挂起5SCloseHandle(hHandle1);ExitThread(0);returnnRetCode;}代码段2//线程对应的函数四、思考(1)如何向线程对应的函数传递参

5、数?一个参数如何传递,多个参数又如何传递?(2)深入理解线程与进程的概念,在Windows环境下何时使用进程,何时使用线程。实验二线程的同步一、实验目的1.进一步掌握Windows系统环境下线程的创建与撤销。2.熟悉Windows系统提供的线程同步API。3.使用Windows系统提供的线程同步API解决实际问题。二、实验预备内容相关API函数介绍(见资料)三、实验内容完成主、子两个线程之间的同步,要求子线程先执行。在主线程中使用系统调用CreateThread()创建一个子线程。主线程创建子线程后进入阻塞状态,直到子线程运行完毕后唤醒主线程。四、实验指导在Mic

6、rosoftvisualC++6.0环境下建立一个MFC支持的控制台工程文件,编写C程序,在程序中使用CreateSemaphore(NULL,0,1,”SemaphoreName1”)创建一个名为”SemaphoreName1”的信号量,信号量的初始值为0,之后使用OpenSemaphore(SYNCHRONIZE

7、SEMAPHORE_MODIFY_STATE,NULL,”SemaphoreName1”)打开该信号量,这里访问标志用”SYNCHRONIZE

8、SEMAPHORE_MODIFY_STATE”,以便之后可以使用WaitForSingleObject()

9、等待该信号量及使用ReleaseSemaphore()释放该信号量,然后创建一个子线程,主线程创建子线程后调用WaitForSingle(hHandle1,INFINITE),这里等待时间设置为INFINITE表示要一直等待下去,直到该信号量被唤醒为止。子线程结束,调用ReleaseSemaphore(hHandle1,1,NULL)释放信号量,使信号量的值加1。主子线程运行情况如下图:<参考程序 >//Semaphore.cpp:Definestheentrypointfortheconsoleapplication.//#include"stdafx.h"#i

10、nclud

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。