线程的互斥
实验名称:线程的互斥
实验目的: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(),进一步理解线程的互斥。
源代码:
// 操作系统实验三.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; //定义指向临界区对象的地址指针