姓名:蒙吉学号:20072411603
实验名称:线程的互斥
实验目的:1)熟练掌握Windows系统环境下线程的创建于撤销。
2)熟悉Windows系统提供的线程互斥API。
3)使用Windows系统提供的线程互斥API解决实际问题。
实验准备知识:
临界区对象(Criticalsection)包括初始化临界区InitializecritiCalSection()、进入临界区EnterCriticalSection()、退出临界区LeaveCriticalSection()及删除临界区DeleteCriticalsection等API函数;互斥对象(Mutex)包括创建互斥对象(CreateMutex())、打开互斥对象(OpenMutex())、释放互斥条件(ReleaseMutex())API函数。
实验内容:
完成两个子线程之间的互斥,在主线程中使用系统调用CreateThread()创建两个子线程,并使两个子线程互斥的使用全局变量count。
实验要求:
能正确使用临界区对象,包括初始化临界区InitializecritiCalSection()、进入临界区EnterCriticalSection()、退出临界区LeaveCriticalSection()及删除临界区DeleteCriticalsection(),进一步理解线程的互斥。
源代码:
// : Defines the entry point for the console application.
//
#include ""
#include ""
#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; //定义临界区
void func1();
void func2();
int _tmain(int argc, TCHAR* argv[],TCHAR* envp[])
{
int nRetCode=0;
DWORD dwThreadID1, dwThreadID2;
hCriticalSection=&Critical; //将指向临界区的对象的指针指向临界区
InitializeCriticalSection(hCriticalSection); //初始化临界区
h1=CreateThread((LPSECURI
操作系统实验(三)线程的互斥 来自淘豆网m.daumloan.com转载请标明出处.