欢迎来到天天文库
浏览记录
ID:47457348
大小:2.58 MB
页数:25页
时间:2020-01-11
《操作系统实验指导书(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
此文档下载收益归作者所有