MFC/C++学习系列之简单记录2——thread和Release

MFC/C++学习系列之简单记录2------thread和Release

  • 前言
  • MFC的Release版本发布
  • Thread的相关知识
    • 简单举例使用
  • 引用学习
  • 总结

前言

针对最近用到得东西进行记录!


MFC的Release版本发布

基于VC 6.0平台进行Release版本生成。

  • Project------>Setting
  • Setting For------>Win32 Release------>ok
  • Build------>Batch Build
  • ✔XX-Win32 Release------>Build

编译器就会主动生成Release版本了。

Thread的相关知识

在网口和串口通讯中为了持续不断的接收数据,一般会开启线程进行数据接收和发送。MFC中会使用到AfxBeginThread进行线程开启工作。

详细介绍一下AfxBeginThread,是基于CWinThread定义。主要的参数有以下几个:

  • AFX_THREADPROC pfnThreadProc------线程函数入口(额外定义一个函数,然后在函数中处理接收、发送数据)
  • LPVOID pParam------传递的参数
  • int nPriority=THREAD_PRIORITY_NORMAL------优先级
  • UINT nStackSize=0------堆栈大小
  • DWORD dwCreateFlags=0------标志
  • LPSECURITY_ATTRIBUTES lpSecurityAttrs=NULL------线程安全属性

在使用时,一般直接这样用:

cpp 复制代码
CWinThread* xx=AfxBeginThread(XX,this)

只需要关注前面两个参数就好,其他为默认的。如果要额外设置,可以使用SetThreadPriority

cpp 复制代码
SetThreadPriority(xx, THREAD_MODE_BACKGROUND_END)

线程开启后,我们可以对线程在某些需要的时候进行线程重启、挂起以及停止。

cpp 复制代码
xx->ResumeThread();
xx->SuspendThread();
xx=NULL;
AfxEndThread(yy);

关于停止线程,看到一些方式,有的直接在开启线程中while循环时,在循环判断里设置一个标志位,当需要停止线程,则设置标志位类停止线程。

cpp 复制代码
while (flag)
{
	线程要执行的函数
}

依据flag的变化来进行线程的开启与停止。这种似乎不是很好,无法理解线程是否正常关闭了。

还看到AfxEndThread。但是查阅资料显示,终止线程可能会导致线程相关的资源(如句柄、内存等)不被正确释放。因此,应当确保线程已经完成了它的工作,并且可以安全地终止。除了这个还有return 0也可以。

简单举例使用

cpp 复制代码
CWinThread* xx;
bool flag=true;
xx=AfxBeginThread(xx_func,this);
UINT yy::xx_func(LPVOID lparam)
{
	while(flag)
	{
		执行函数
	}
}

void end()
{
	flag=false;
	AfxEndThread(0);
}

引用学习

https://zhuanlan.zhihu.com/p/376017635

总结

关于线程的使用介绍和Release版本的生成说明!

相关推荐
鸿芯微控科技14 小时前
MFC关断后还有流量怎么办?零流量、阀门泄漏、压差与Python分析
c++·python·mfc·质量流量控制器·关断泄漏·零流量测试
鸿芯微控科技1 天前
MFC量程怎么选?最小流量、满量程、调节比与误差计算
c++·python·mfc·流量控制·设备选型·质量流量控制器
TunerT_TQ10 天前
Valhalla 静态工程审阅 #021|华为MindSpore 源码证据驱动评测【大厂开源基础设施特辑】
c++·开源·github·mfc·#大模型开源·#华为开源·#深度学习
蒙奇·D·路飞-10 天前
OpenClaw:开源的《合金弹头》精神续作与终极本地部署指南
c++·开源·mfc
TunerT_TQ10 天前
Valhalla 静态工程审阅 #018|MMCV 源码证据驱动评测【大厂开源基础设施特辑】
c++·开源·mfc·#计算机视觉·#商汤科技·#openmmlab·#静态源码审计
鸿芯微控科技11 天前
MFC质量流量控制器流量不准怎么排查?设定值、反馈值与参考流量对比,附Python代码
c++·python·mfc
鸿芯微控科技12 天前
MFC气体转换系数怎么用?标定气体、换算方向与Python批量计算
c++·python·mfc
小小龙学IT16 天前
C++ Placement New 与显式析构:手动对象生命周期管理的艺术
c++·windows·mfc
蕓晨1 个月前
MFC实现画图菜单小程序
c++·mfc
浩浩测试一下1 个月前
windows 加壳工具代码实现02 - 加壳界面实现MFC
windows·mfc·免杀·加壳器·pe应用