VC++ AfxBeginThread 与 CreateThread 的区别
简言之:
AfxBeginThread是MFC的全局函数,是对CreateThread的封装。
CreateThread是Win32 API函数,前者最终要调到后者。
具体说来,CreateThread这个 函数是windows提供给用户的 API函数,是SDK的标准形式,在使用的过
程中要考虑到进程的同步与互斥的关系,进程间的同步互斥等一系列会导致操作系统死锁的因素,用起来
比较繁琐一些,初学的人在用到的时候可能会产生不可预料的错误,建议多使用AfxBeginThread,是编译
器对原来的CreateThread函数的封装,用与MFC编程(当然,只要修改了项目属性,console和win32项目
都能调用)而_beginthread是C的运行库函数。
2>
在使用AfxBeginThread时,
线程函数的定义为:UINT _yourThreadFun(LPVOID pParam) 参数必须如此
在使用CreateThread时,
线程的函数定义为: DWORD WINAPI _yourThreadFun(LPVOID pParameter)
两者实质是一样的,
不过AfxBeginThread返回CWinThread指针,就是说它会new一个CWinThread对象,而这个对象在线程运行结束时是会自动删除的,
CreatThread,它返回的是一个句柄,如果你不使用CloseHandle的话就可以通过它安全的了解线程状态,
最后不要的时候CloseHandle,Windows才会释放资源
VC++ AfxBeginThread 与 CreateThread 的区别相关推荐
- _beginthreadex和CreateThread的区别
程序员对于Windows程序中应该用_beginthread还是CreateThread来创建线程,一直有所争论.本文将从对CRT源代码出发探讨这个问题. I. 起因 使用_beginthread还是 ...
- vc中ASSERT()和VERIFY()区别
vc中ASSERT()和VERIFY()区别 (2010-03-27 22:24:53) 转载▼ 标签: 杂谈 1 ASSERT与VERIFY宏在Debug模式下作用基本一致,二者都对表达式的值 ...
- VC中_T()与L区别(转)
VC中_T("")与L区别 区别解释 一说这个话题,肯定涉及MS的字符集,先看MS对_T(其中_TEXT(")与_T("")一样)的定义: [cpp] ...
- VC下Debug 和Release 区别【转】
在工具栏上点右键,选择编译,将编译win32debug改为win32 Release即可.如果需要调试的话,还需要再改回来方可. 最近写代码过程中,发现 Debug 下运行正常,Release 下就会 ...
- VC++ WCHAR,CHAR,TCHAR的区别
C++的字符分成两种类型wchar_t和char. 其中 WCHAR==wchar_t,CHAR==char. TCHAR是一种条件编译的类型,根据条件可以代表wchar_t或char. ...
- vc 消息与事件的区别
事件是一个动作--用户触发的动作. 消息是一个信息--传递给系统的信息. 事件与消息的概念在计算机中较易混淆,但本质不同: 事件由用户(操作电脑的人) ...
- AfxBeginThread的介绍/基本用法和Window多线程使用详解
AfxBeginThread 用户界面线程和工作者线程都是由AfxBeginThread创建的.现在,考察该函数:MFC提供了两个重载版的AfxBeginThread,一个用于用户界面线程,另 ...
- 转:MFC中创建多线程
MFC中创建多线程 MFC的多线程函数必须声明为静态的或者是全局函数(不同的在于全局函数不能访问类的私有静态成员,而静态类函数可以):但这样的线程函数只能访问静态的成员变量,要实现访问类的其他成员,可 ...
- CreateThread、_beginthreadex和AfxBeginThread 的区别
CreateThread._beginthreadex和AfxBeginThread 创建线程好几个函数可以使用,可是它们有什么区别,适用于什么情况呢? 参考了一些资料,写得都挺好的,这里做一些摘抄和 ...
最新文章
- C++——创建类的时候用new与不用new 的区别(转)
- mysql select 返回列,是否可以对在mysql SELECT语句中返回列的顺序进行排序?
- 山东省中职计算机应用专业人才培养方案,计算机应用与维修专业人才培养方案(中职)...
- linux使用同一密钥对实现互相免密登录
- permutations python_为什么Python的itertools.permutations包含重复项? (当原始列表重复时)...
- 【华为云技术分享】为什么说物联网平台是城市数字化的必备底座
- 零基础学习前端:学习路线、学习计划、实战项目和面试题简历分享。
- 在CentOS7上实现NFS共享
- 从氨基酸到大分子(蛋白质、核酸)
- Kotlin的一些特殊运算符
- 用友服务器ip地址在哪里修改密码,用友服务器ip地址在哪里修改密码
- Hexo+Github搭建个人博客(一)——开始搭建
- windows窗口添加菜单[SDK]
- xp计算机u盘重装系统,如何用u盘装xp系统_纯净版xp系统_xp系统安装教程 - u大师...
- VMware连接不上网络解决办法
- 光影mod_我的世界:mc十大“最受欢迎”mod,知道半数以上,实为老玩家
- pdf怎么分割页面?
- AI绘画怎么生成?这些软件帮助你实现
- NB-IoT模组选型及项目初始必看!
- 人机博弈 围棋程序GNU GO 所有版本源码及使用方法
热门文章
- 今天,小程序正式支持 SVG
- 给jdk写注释系列之jdk1.6容器(1):ArrayList源码解析
- iOS组件化(二):创建远程私有库
- 网络工程师必懂的专业术语
- PHP设计模式系列 - 解释器模式
- C++模板的特例化编译为多重定义问题
- 隐藏Apache Nginx PHP版本号
- 【技术贴】五分钟解决打开软件提示windows正在设置Microsoft Office Profes
- ntfs分区对linux的局限,如何使Linux支持NTFS分区
- java jpanel方法,Java JPanel.putClientProperty方法代码示例