前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MFC/C++学习系列之简单记录2——thread和Release

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

原创
作者头像
升级打怪的菜鸟
发布2024-11-14 21:24:25
120
发布2024-11-14 21:24:25
举报
文章被收录于专栏:MFC

好事发生

文章推荐:.NET 6中的LINQ功能改进:更高效、更灵活、更易用

文章链接:https://cloud.tencent.com/developer/article/2465713

文章简介:本文详细介绍了.NET 6中的LINQ功能在不同方面的优化改进,感兴趣的同学可以看看!

前言

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


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);
}

总结

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 好事发生
  • 前言
  • MFC的Release版本发布
  • Thread的相关知识
    • 简单举例使用
    • 总结
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档