当前位置: 首页 > news >正文

MFC中关于CMutex类的学习

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.lryc.cn/news/349501.html

相关文章:

  • 删除表空间
  • 下载element-ui报错
  • [原创](Modern C++)现代C++的std::bind花式绑定,使用方式大全.
  • Unity射击游戏开发教程:(13)如何在Unity中播放音效
  • Swift—手写防抖、手写图片预加载与多张图片拼接
  • Redis过期键删除策略
  • 413 Request Entity Too Large
  • 工业无风扇计算机的优点
  • 个人学习计划
  • 【电控实物-LK电机】
  • 《Mybatis》系列文章目录
  • ARM机密计算组件
  • Linux 生态与工具
  • RHCE网络服务配置之循环执行的例行性工作
  • vue3使用el-radio-group获取表格数据无法选中问题
  • java并发
  • Python Selenium Grid 环境快速搭建
  • 电机控制系列模块解析(21)—— 弱磁控制
  • 【3dmax笔记】022:文件合并、导入、导出
  • 8、QT——QLabel使用小记2
  • python实现读取串口数据-使用LibModbus库实现一个实时读取串口数据
  • 类与面向对象编程(Object-Oriented Programming, OOP)
  • 引用数据类型 栈内存 堆内存
  • 【class8】人工智能初步(图像识别-----卷积神经网络)
  • Node.js安装及环境配置(超详细!保姆级!!)
  • 利用反射如何动态生成sql
  • SpringBoot项目中使用Redis,Mybatis和JWT
  • CSS2(一):CSS选择器
  • LeetCode题练习与总结:不同的二叉搜索树--96
  • 第八十一章 将 Web 应用程序与远程 Web 服务器结合使用 - 如果从 Web 服务器提供静态文件