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

使用MFC中的CEvent实现两个线程之间的交替打印

使用MFC中的CEvent实现两个线程之间的交替打印

在面试过程中遇到一个问题:

问题要求如下:请写出一个多线程程序,要求打印效果如下:A:0,B:0、A:1,B:1…A:99,B:99?

代如如下:

#include <iostream>
#include<afxmt.h>
#include<afxwin.h>
#include<afx.h>
#include<windows.h>
using namespace std;CEvent g_EventA(TRUE,TRUE);
CEvent g_EventB(FALSE,TRUE);int g_nCount = 100;UINT AFX_CDECL FuncA(LPVOID lPvoid)
{for (int i = 0; i < g_nCount; i++){WaitForSingleObject(g_EventA,INFINITE);cout << "A:" << i << endl;g_EventA.ResetEvent();g_EventB.SetEvent();}return 0;
}UINT AFX_CDECL FuncB(LPVOID lPvoid)
{for (int i=0;i< g_nCount;i++){WaitForSingleObject(g_EventB, INFINITE);cout << "B:" << i << endl;g_EventB.ResetEvent();g_EventA.SetEvent();}return 0;
}int main()
{AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(),0);::AfxBeginThread(FuncA,NULL);::AfxBeginThread(FuncB,NULL);Sleep(1000);std::cout << "Hello World!\n";
}

代码运行结果:

微信截图_20250609231755
程序说明:上述定义了两个CEvent 变量g_EventA和g_EventB,g_EventA初始化为有信号,g_EventB初始化为没有信号,这样就可以实现A先打印,然后在FuncB函数中调用WaitForSingleObject函数等待g_EventB有信号,只有在FuncA函数执行设置g_EventB有信号后,FuncB才打印。

http://www.xdnf.cn/news/12893.html

相关文章:

  • 【Linux系统】Linux环境变量:系统配置的隐形指挥官
  • Gemini 2.5 Pro (0605版本) 深度测评与体验指南
  • MySQL 8.0 OCP 英文题库解析(十二)
  • Rust 学习笔记:共享状态并发
  • 三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
  • 从零手写Java版本的LSM Tree (三):MemTable 内存表
  • 图表类系列各种样式PPT模版分享
  • 高性能低功耗之道:全志A133在智能硬件中的全面应用
  • 设计模式-抽象工厂模式
  • CSS3 常用功能详细使用指南
  • App Trace技术解析:传参安装、一键拉起与快速安装
  • 【Linux】Linux安装并配置RabbitMQ
  • Maven 多仓库治理与发布策略深度实践
  • Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
  • 大模型的LoRa通讯详解与实现教程
  • 时序数据库IoTDB在工业物联网时序数据管理中的应用
  • Ray框架:分布式AI训练与调参实践
  • WEB3全栈开发——面试专业技能点P4数据库
  • 数据结构-文件
  • Unity3D SM节点式动画技能编辑器实现
  • AIGC(AI Generated Content)测试结合自动化工具与人工评估
  • 在 Windows 11 上创建新本地用户账户
  • C++ 设计模式 《爬虫围城危机:小明用代理模式自救》
  • 代码随想录算法训练营第十一天| 150. 逆波兰表达式求值、239. 滑动窗口最大值、347.前 K 个高频元素
  • Gartner 人力优化策略分析报告学习心得
  • SEO长尾关键词增效策略
  • 大模型面试题:大模型训练过程中如何估计显卡利用率?
  • 【ESP32】ESP-IDF开发 | 低功耗蓝牙开发 | 蓝牙空中串口 + 服务端和客户端例程
  • LlamaIndex 工作流 分支和循环
  • AI是如何换装的?