操作系统实验(七)线程的互斥

线程的互斥 实验名称:线程的互斥实验目的:1)熟练掌握Windows系统环境下线程的创建于撤销。 2)熟悉Wind

线程的互斥 实验名称: 线程的互斥 实验目的 1Windows :)熟练掌握系统环境下线程的创建于撤销。 2WindowsAPI )熟悉系统提供的线程互斥。 3WindowsAPI )使用系统提供的线程互斥解决实际问题。 实验准备知识 : CriticalsectionInitializecritiCalSection 临界区对象()包括初始化临界区()、进入临界 EnterCriticalSectionLeaveCriticalSection 区()、退出临界区()及删除临界区 DeleteCriticalsectionAPIMutexCreateMutex 等函数;互斥对象()包括创建互斥对象(())、 OpenMutexReleaseMutexAPI 打开互斥对象(())、释放互斥条件(())函数。 实验内容 : CreateThread 完成两个子线程之间的互斥,在主线程中使用系统调用()创建两个子线 count 程,并使两个子线程互斥的使用全局变量。 实验要求 : InitializecritiCalSection 能正确使用临界区对象,包括初始化临界区()、进入临界区 EnterCriticalSectionLeaveCriticalSection ()、退出临界区()及删除临界区 DeleteCriticalsection (),进一步理解线程的互斥。 源代码 : // .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 count=5; static HANDLE h1; static HANDLE h2; LPCRITICAL_SECTION hCriticalSection; // 定义指向临界区对象的地址指针 CRITICAL_SECTION Critical; // 定义临界区

腾讯文库操作系统实验(七)线程的互斥
腾讯文库腾讯文库
search
课件
教案
试卷
日记
论文
读后感
中考
高考
考研
雅思
托福
行测
申论
面试攻略
AI
大数据
新媒体
登记表
合同
协议
委托
美食
司法考试
求职招聘
工作汇报
入职培训
实习报告
思想汇报
调研报告
旅游攻略
读书笔记
立享超值文库资源包
我的资料库

file操作系统实验(七)线程的互斥付费本文由万文网提供

编辑文档编辑文档
线程的互斥实验名称:线程的互斥实验目的1Windows:)熟练掌握系统环境下线程的创建于撤销。2WindowsAPI)熟悉系统提供的线程互斥。3WindowsAPI)使用系统提供的线程互斥解决实际问题。实验准备知识CriticalsectionInitializecritiCalSection临界区对象()包括初始化临界区()、进入临界EnterCriticalSectionLeaveCriticalSection区()、退出临界区()及删除临界区DeleteCriticalsectionAPIMutexCreateMutex等函数;互斥对象()包括创建互斥对象(())、OpenMutexReleaseMutexAPI打开互斥对象(())、释放互斥条件(())函数。实验内容CreateThread完成两个子线程之间的互斥,在主线程中使用系统调用()创建两个子线count程,并使两个子线程互斥的使用全局变量。实验要求InitializecritiCalSection能正确使用临界区对象,包括初始化临界区()、进入临界区EnterCriticalSectionLeaveCriticalSection()、退出临界区()及删除临界区DeleteCriticalsection(),进一步理解线程的互斥。源代码//.cpp:Definestheentrypointfortheconsoleapplication.操作系统实验三//#include"stdafx.h"#include".h"操作系统实验三#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////TheoneandonlyapplicationobjectCWinApptheApp;usingnamespacestd;staticintcount=5;staticHANDLEh1;staticHANDLEh2;LPCRITICAL_SECTIONhCriticalSection;//定义指向临界区对象的地址指针CRITICAL_SECTIONCritical;//定义临界区
voidfunc1();voidfunc2();int_tmain(intargc,TCHAR*argv[],TCHAR*envp[]){intnRetCode=0;DWORDdwThreadID1,dwThreadID2;hCriticalSection=&Critical;//将指向临界区的对象的指针指向临界区InitializeCriticalSection(hCriticalSection);//初始化临界区h1=CreateThread((LPSECURITY_ATTRIBUTES)NULL,0,(LPTHREAD_START_ROUTINE)func1,(LPVOID)NULL,0,&dwThreadID1);//func1创建线程if(h1==NULL)printf("Thread1createFail!\n");elseprintf("Thread1createsuccess!\n");h2=CreateThread((LPSECURITY_ATTRIBUTES)NULL,0,(LPTHREAD_START_ROUTINE)func2,(LPVOID)NULL,0,&dwThreadID2);//func2创建线程if(h1==NULL)printf("Thread2createFail!\n");elseprintf("Thread2createsuccess!\n");_sleep(1000);CloseHandle(h1);CloseHandle(h2);DeleteCriticalSection(hCriticalSection);//删除临界区ExitThread(0);returnnRetCode;}voidfunc2(){intr2;EnterCriticalSection(hCriticalSection);//进入临界区r2=count;_sleep(100);r2=r2+1;count=r2;printf("countinfunc2=%d\n",count);LeaveCriticalSection(hCriticalSection);//退出临界区
查看剩余全文
复制全文
复制全文
全屏阅读
全屏阅读
下一篇
下一篇