实验三 线程的互斥

该实验旨在熟练掌握Windows系统下线程的创建与撤销,熟悉线程互斥API。通过在MFC控制台工程中创建两个子线程,使用临界区对象实现全局变量count的互斥访问,确保线程安全。实验结果显示两个子线程成功运行,验证了临界区API的正确使用。
摘要由CSDN通过智能技术生成

实验三 线程的互斥

一、实验目的

  1. 熟练掌握Windows系统环境下线程的创建与撤销。
  2. 熟悉Windows系统提供的线程互斥API。
  3. 使⽤Windows系统提供的线程互斥API解决实际问题。

二、实验准备

理论知识

  1. 两种形式的制约关系
    • 间接互相制约的关系
    • 直接相互制约的关系(这次任务,互斥的关系)
  2. 两种解决方式
    • 临界资源
    • 遵循临界区概念
	while (TURE)
	{
   
		进入区
		临界区
		退出区
		剩余区
	}

相关API函数介绍

临界区对象

初始化临界区 进入临界区 退出临界区 删除临界区
说明 InitializeCriticalSection()⽤于初始化临界区对象。 EnterCriticalSection()等待进⼊临界区的权限,当获得该权限后进⼊临界区。 LeaveCriticalSection()释放临界区的使⽤权限。 DeleteCriticalSection()删除与临界区有关的所有系统资源。
原型 VOID InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection ) VOID EnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection ); VOID LeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection ); VOID DeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection );
参数说明 lpCriticalSection:指出临界区对象的地址。 lpCriticalSection:指出临界区对象的地址。 lpCriticalSection:指出临界区对象的地址。 lpCriticalSection:指出临界区对象的地址。
返回值

三、实验内容

(一)实验内容

  • 在 Visual C++ 6.0 环境下建⽴⼀个MFC⽀持的控制台⼯程⽂件,编写C程序,在主线程中使用InitializeCriticalSec2tion()初始化临界区,然后建⽴两个⼦线程,在两个⼦线程中使⽤全局变量 count 的前、后分别使用EnterCriticalSeation()进⼊临界区LeaveCriticalSection()退出临界区,等两个⼦线程运⾏完毕,主线程使⽤DeleteCriticalSection()删除临界区并撤销线程。

(二)主要代码

// 03.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "03.h"
#ifdef _DEBUG
#define new DEBUG_NEW
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值