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

使用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才打印。

相关文章:

  • 题山采玉:Day3
  • 云原生周刊:k0s 成为 CNCF 沙箱项目
  • Python自然语言处理库之gensim使用详解
  • AspectJ 在 Android 中的完整使用指南
  • WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
  • 能源即服务:智慧移动充电桩的供给模式创新
  • 2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
  • python3基础语法梳理
  • CppCon 2015 学习:The Importance of Being const
  • 盟接之桥EDI软件:为制造业打造高效、安全的数据桥梁
  • 【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
  • 自然语言处理——循环神经网络
  • Oracle常见进程杀进程测试
  • 《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析(四)DPHY ECC
  • 在阿里云上搭建n8n
  • Deepseek大模型私有化部署
  • 【论文阅读】:Weighted Graph Cuts without Eigenvectors:A Multilevel Approach
  • 精益数据分析(98/126):电商转化率优化与网站性能的底层逻辑
  • LabVIEW超声频率跟踪
  • C++实现分布式网络通信框架RPC(2)——rpc发布端
  • html 模板网站/网络营销课程个人总结3000字
  • ae模板素材网站/求个没封的网站2022
  • 做网站的公司现在还 赚钱吗6/深圳互联网营销
  • c语言开发网站后端/企业qq官网
  • wordpress wordbook/岳阳seo快速排名
  • 做蛋糕网站的 实训报告图/长沙seo公司