MFC中关于CMutex类的学习

news/2024/10/22 11:07:33/

MFC中关于CMutex类的学习

最近在项目中要实现两个线程之间的同步,MFC中提供了4个类,分别是CMutex(互斥量)、CCriticalSection(临界区)、CEvent(事件对象)、CSemaphore(信号量)。有关这4个类的说明,大家可以参考微软官方文档:

CMutex 类 | Microsoft Learn

CEvent 类 | Microsoft Learn

CCriticalSection 类 | Microsoft Learn

CSemaphore 类 | Microsoft Learn

今天我们要用到的是CMutex类。下面我们用一个简单的实力来介绍:

新建一个控制台应用程序如下图:

在这里插入图片描述

并且添加如下代码

#include <iostream>
#include <afxmt.h>
#include <thread>
#include <afxwin.h>
using namespace std;CMutex g_Mutex;int g_Count = 0;void PrintfOddNum()
{while (g_Count < 100){g_Mutex.Lock();//CSingleLock lock(&g_Mutex);if (g_Count % 2 == 1){cout << "thr1:" << g_Count << endl;g_Count++;}//lock.Unlock();g_Mutex.Unlock();}
}void PrintfEvenNum()
{while (g_Count < 100){g_Mutex.Lock();//CSingleLock lock(&g_Mutex);if (g_Count % 2 == 0){cout << "thr2:" << g_Count << endl;g_Count++;}//lock.Unlock();g_Mutex.Unlock();}
}int main()
{thread th1(PrintfOddNum);thread th2(PrintfEvenNum);th1.join();th2.join();std::cout << "Hello World!\n";
}

这个测试项目主要实现两个线程分别打印100以内的奇数和偶数。

代码运行后的测试结果如下:
在这里插入图片描述

如上图,可以实现两个线程分别打印奇数和偶数。

欢迎大家一起交流学习。


http://www.ppmy.cn/news/1459477.html

相关文章

富格林:正规经验加持交易安全

富格林指出&#xff0c;现货黄金是一种特殊的黄金交易形式&#xff0c;作为最热门的黄金投资受到大家欢迎&#xff0c;进行现货黄金交易需要掌握现货黄金分析技巧和方法&#xff0c;更重要的是要有正规交易经验的加持。现货黄金的安全性大家可以说是毋容置疑的&#xff0c;但也…

UE5材质基础(3)——数学节点篇2

UE5材质基础&#xff08;3&#xff09;——数学节点篇2 目录 UE5材质基础&#xff08;3&#xff09;——数学节点篇2 承接上文Time和lerp配合使用 Floor节点 Ceil节点 Frac节点 Fmod节点 TexCoord节点 If节点 Fresnel节点 CameraPosition节点 CameraVector节点 Pi…

【Node.js从基础到高级运用】二十八、Node.js 内存管理浅析

Node.js 作为一个基于 Chrome V8 引擎的 JavaScript 运行环境&#xff0c;其性能和效率在很大程度上取决于内存管理的优劣。 1. Node.js 内存结构 在深入了解内存管理之前&#xff0c;我们需要先了解 Node.js 的内存结构。Node.js 的内存可以大致分为以下几个部分&#xff1a;…

企业微信创建应用(一)

登录到企业微信后台管理(https://work.weixin.qq.com/)进入自建应用(应用管理-应用-创建应用) 3.查看参数AgentId和 Secret 4.企业微信查看效果

记录一个git无法push的问题

今天准备写新功能&#xff0c;想把之前的代码push到远程仓库&#xff0c;但是git突然就不工作了&#xff0c;报错如下 OpenSSL SSL_connect: Connection was reset in connection to gitee.com:443 因为我昨天把项目目录改了&#xff0c;以为是目录修改的问题&#xff0c;但是…

【全开源】JAVA台球助教台球教练多端系统源码支持微信小程序+微信公众号+H5+APP

功能介绍 球厅端&#xff1a;球厅认证、教练人数、教练的位置记录、助教申请、我的项目、签到记录、我的钱包、数据统计 教练端&#xff1a;我的页面&#xff0c;数据统计、订单详情、保证金、实名认证、服务管理、紧急求助、签到功能 用户端&#xff1a;精准分类、我的助教…

STM32程序进入hardfault_handler()

背景&#xff1a; 假期前一直在修改代码&#xff0c;没有边改边测。节后回来测试代码&#xff0c;发现程序上电后很快就进入hardfault_handler&#xff08;&#xff09;中断。 导致程序反复复位。 查找原因&#xff1a; 在程序的_it.c文件里有几句代码&#xff0c;如果注释…

java使用正则表达式

这段Java代码首先定义了一个正则表达式&#xff0c;用于检查输入字符串formName是否符合特定格式。接下来&#xff0c;代码执行以下操作&#xff1a; Pattern pattern Pattern.compile("^1111(12|21)22[TF][0-9]{4}$");: 创建一个Pattern对象&#xff0c;该对象根据…