2022年操作系统实验线程的互斥 .pdf

上传人:H****o 文档编号:32483957 上传时间:2022-08-09 格式:PDF 页数:7 大小:478.93KB
返回 下载 相关 举报
2022年操作系统实验线程的互斥 .pdf_第1页
第1页 / 共7页
2022年操作系统实验线程的互斥 .pdf_第2页
第2页 / 共7页
点击查看更多>>
资源描述

《2022年操作系统实验线程的互斥 .pdf》由会员分享,可在线阅读,更多相关《2022年操作系统实验线程的互斥 .pdf(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1 线程的互斥实验名称: 线程的互斥实验目的 :1)熟练掌握Windows 系统环境下线程的创建于撤销。2)熟悉 Windows 系统提供的线程互斥API。3)使用 Windows 系统提供的线程互斥API 解决实际问题。实验准备知识:临界区对象(Criticalsection )包括初始化临界区InitializecritiCalSection () 、进入临界区EnterCriticalSection ( )、 退 出 临 界 区LeaveCriticalSection ( ) 及 删 除 临 界 区DeleteCriticalsection 等 API 函数;互斥对象(Mutex )包括

2、创建互斥对象(CreateMutex() ) 、打开互斥对象(OpenMutex () ) 、释放互斥条件(ReleaseMutex() )API 函数。实验内容 :完成两个子线程之间的互斥,在主线程中使用系统调用CreateThread()创建两个子线程,并使两个子线程互斥的使用全局变量count。实验要求 :能正确使用临界区对象,包括初始化临界区InitializecritiCalSection () 、进入临界区EnterCriticalSection() 、 退出临界区LeaveCriticalSection() 及删除临界区DeleteCriticalsection() ,进一步理解

3、线程的互斥。源代码 :/ 操作系统实验三.cpp : Defines the entry point for the console application. / #include stdafx.h #include 操作系统实验三.h #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE = _FILE_; #endif / / The one and only application object CWinApp theApp; using namespace std; static int c

4、ount=5; static HANDLE h1; static HANDLE h2; LPCRITICAL_SECTION hCriticalSection; /定义指向临界区对象的地址指针CRITICAL_SECTION Critical; /定义临界区名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 7 页 - - - - - - - - - 2 void func1(); void func2(); int _tmain(int argc, TCHAR* argv,

5、TCHAR* envp) int nRetCode=0; DWORD dwThreadID1, dwThreadID2; hCriticalSection=&Critical; /将指向临界区的对象的指针指向临界区InitializeCriticalSection(hCriticalSection); /初始化临界区h1=CreateThread(LPSECURITY_ATTRIBUTES)NULL, 0, (LPTHREAD_START_ROUTINE)func1, (LPVOID)NULL, 0,&dwThreadID1); /创建线程func1 if(h1=NULL)printf(Thr

6、ead1 create Fail!n); else printf(Thread1 create success!n); h2=CreateThread(LPSECURITY_A TTRIBUTES)NULL, 0, (LPTHREAD_START_ROUTINE)func2, (LPVOID)NULL, 0,&dwThreadID2); /创建线程func2 if(h1=NULL)printf(Thread2 create Fail!n); else printf(Thread2 create success!n); _sleep(1000); CloseHandle(h1); CloseHa

7、ndle(h2); DeleteCriticalSection(hCriticalSection); /删除临界区ExitThread(0); return nRetCode; void func2() int r2; EnterCriticalSection(hCriticalSection); /进入临界区r2=count; _sleep(100); r2=r2+1; count=r2; printf(count in func2=%dn,count); LeaveCriticalSection(hCriticalSection); /退出临界区名师资料总结 - - -精品资料欢迎下载 -

8、 - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 7 页 - - - - - - - - - 3 void func1() int r1; EnterCriticalSection(hCriticalSection); /进入临界区r1=count; _sleep(100); r1=r1+1; count=r1; printf(count in func1=%dn,count); LeaveCriticalSection(hCriticalSection); /退出临界区 实验步骤:1)实验的第一步和线程的创建与撤销

9、、线程的同步过程是一样的,比如新建工程文件以及工程设置等,2)引进系统分配的程序后对此程序进行修改输入源代码的过程名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 7 页 - - - - - - - - - 4 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 7 页 - - - - - - - - - 5 名师资料总结 - - -精品资料欢迎下载 -

10、- - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 7 页 - - - - - - - - - 6 3)运行源代码或线程互斥的程序4)编译源代码过程名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 7 页 - - - - - - - - - 7 5)查看运行结果实验总结:1) 进一步巩固和掌握第一二次实验线程的创建于撤销和线程的同步的一些基本函数的运用方法和各自的功能的基础上上了解线程的互斥。2) 对初始化临界区InitializecritiCalSection () 、进入临界区EnterCriticalSection () 、退出临界区 LeaveCriticalSection ()及删除临界区DeleteCriticalsection ()等命令的使用方法以及他们各自的功能有所了解。3) 对线程互斥的源代码有所了解,比如进入临界区和退出临界区等。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 7 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁