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

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——线程安全属性

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

CWinThread* xx=AfxBeginThread(XX,this)

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

SetThreadPriority(xx, THREAD_MODE_BACKGROUND_END)

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

xx->ResumeThread();
xx->SuspendThread();
xx=NULL;
AfxEndThread(yy);

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

while (flag)
{
	线程要执行的函数
}

依据flag的变化来进行线程的开启与停止。这种似乎不是很好,无法理解线程是否正常关闭了。
还看到AfxEndThread。但是查阅资料显示,终止线程可能会导致线程相关的资源(如句柄、内存等)不被正确释放。因此,应当确保线程已经完成了它的工作,并且可以安全地终止。除了这个还有return 0也可以。

简单举例使用

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版本的生成说明!


http://www.kler.cn/a/446411.html

相关文章:

  • BlueLM:以2.6万亿token铸就7B参数超大规模语言模型
  • CLION中运行远程的GUI程序
  • 合并比对学习资料
  • Go vendor
  • 华为云计算HCIE笔记01
  • JS信息收集(小迪网络安全笔记~
  • 【服务器】MyBatis是如何在java中使用并进行分页的?
  • 中阳科技的量化交易模型:从理论到实践的全面探索
  • 1688跨境代购代采:API赋能的自动化与信息化革新
  • 【NLP 18、新词发现和TF·IDF】
  • git中的tag标签远程管理
  • Linux禁用网络、开启网络
  • Docker:Dockerfile(补充四)
  • 贪心算法 greedy
  • CEF127 编译指南 MacOS 篇 - 拉取 CEF 源码(五)
  • 多进程、多线程、分布式测试支持-pytest-xdis插件
  • 零基础学习OpenFOAM:从流体力学与人工智能的交叉科学,流场预测与重构,气动信息预测,基于深度强化学习的气动优化出发
  • 计算机网络:运输层 —— TCP 的选择确认(SACK)
  • WPF 用Vlc.DotNet.Wpf实现视频播放、停止、暂停功能
  • 利用爬虫获取的数据能否用于商业分析?
  • Next.js v15 - 服务器操作以及调用原理
  • 搭建云手机平台的技术要求?
  • 无人机航测系统技术特点!
  • dolphinscheduler服务注册中心源码解析(二)基于zookeeper实现注册中心源码解析
  • 创建Copilot Agents 就像创建Word文档和PPT演示文稿一样简单
  • docker run 端口映射