CreateThread、_beginthread与AfxBeginThread的区别及其注意事项
在windows下一般由以下三种方式来进行线程操作:
1、通过CreateThread(),对应线程结束函数ExitThread();
2、通过_beginthread(),对应线程结束函_endthread();
3、在MFC程序中还可以通过AfxBeginThread();对应线程结束函数AfxEndThread(),它们是MFC层面进行的再次封装。
上述函数的区别为:
在_beginthread()函数中实际上也是调用CreateThread来创建线程,但是在调用CreateThread之前,先申请了一个叫做_tiddata的数据结构(该结构在mtdll.h中进行了定义),该结构中主要保存了线程ID、线程句柄、erron、strtok的前一次调用位置,rand()函数的种子、异常处理等与CRT(C RunTime)相关的信息,但是这些信息是线程私有的。
在_endthread()函数中对申请的_tiddata数据结构进行释放。
正是有这些区别,在线程使用过程中需注意:
1、配对使用线程创建与结束函数,即CreateThread()<=>ExitThread()、_beginthread()<=>_endThread()、AfxBeginThread()<=>_AfxEndThread()。
2、尽量使用_beginthread()/_beginthreadex()/_endThread()/_endthreadex()。
3、在MFC工程中尽量它所包包装的线程函数:AfxBeginThread()【AfxEndThread()】。
CreateThread、_beginthread与AfxBeginThread的区别及其注意事项相关推荐
- Mybatis映射文件SQL语句模糊查询,#和$的区别和注意事项
Mybatis映射文件SQL语句模糊查询 1. "%"#{value}"%" 在参数中不需要添加 %_ 推荐使用 2. '%${value}%' 在参数中不需要 ...
- 英文破折号、连接号、连字符、负号的区别,注意事项和输入方法
英文破折号.连接号.连字符.负号的区别,注意事项和输入方法 En dash MS Word中输入2013,在按Alt+X Em dash MS Word中输入2014,在按Alt+X
- 动态代理jdk和cglib区别、注意事项(private,static,final)、spring aop原理
文章目录 一.代理简聊 二.静态代理 三.动态代理 1.jdk动态代理 2.cglib动态代理 四.动态代理总结.注意事项 1.jdk动态代理与cglib的区别. 2.注意事项及分析. 五.aop原理 ...
- CreateThread、_beginthreadex和AfxBeginThread 的区别
CreateThread._beginthreadex和AfxBeginThread 创建线程好几个函数可以使用,可是它们有什么区别,适用于什么情况呢? 参考了一些资料,写得都挺好的,这里做一些摘抄和 ...
- 一文解决new/delete与malloc/free相关问题:区别?注意事项?使用方式?
目录 一.内存分配模型 1.1 先看内存的分布状况 1.2 动态内存分配 1.3 C语言中分配内存的方式 1.4 C++中动态分配内存的方式 二.new和malloc的区别 2.1 属性 2.2 参数 ...
- iOS for 和 forin 的区别 以及注意事项
一 效率: for VS for(... in ...) for 的应用范围广基本可以NSArray.NSArray以及C语言的数组等,而for(... in ...)仅限于NSArray.NSArr ...
- 一文全搞定:应届生offer,三方,劳动合同区别与注意事项
文章目录 1 offer,三方,劳动合同是什么? 1.1 offer 1.2 三方协议 1.3 劳动合同 1.4 三者区别与联系 2 签订三方の注意事项 2.1 户口 2.2 工作内容 2.3 培训 ...
- 单点液位开关和连续液位传感器之间的区别及选择注意事项
在开始选择液位传感器时,首先要了解液位开关和液位传感器之间的区别. 目前市场上有许多不同级别的传感技术可供选择,其中一些已经存在了几十年,例如在食品和饮料,制造业,汽车和白色家电等行业中都会使用到液位 ...
- 【量化交易】股票价格前复权与后复权的区别以及注意事项
时不时就会看到到底是用股票前复权还是后复权价格的讨论,比如下面就是一个很经典的问法: "我用前复权价格计算指标的时候,发现会出现负价格,就没法取log了,应该是分红太多导致的,请问这种怎么处 ...
最新文章
- JAVA基础——编程练习(一)
- 如何在linux下解压缩rar格式的文件压缩包
- Oracle删除指定用户下所有对象
- 关于用notepad++确认代码中\r\n\t空格等不显示的字符
- ibatis中多表联接查询
- 箭头函数特殊性与普通函数的区别
- matlab 抽样判决代码,matlab抽样判决器
- 模板:快速莫比乌斯变换(FMT)+快速沃尔什变换(FWT)(多项式)
- 央行数字货币(CBDC)基础知识
- C++学习笔记 —— 回合制小游戏案例
- Java使用Lambda表达式多字段求和
- C语言中格式输出二进制的两种方法
- QT txt读写—论坛体编辑器
- 用Matplotlib绘制渐变的彩色曲线
- hive:函数:日期比较函数:获取当前日期 + date_add + date_sub函数获取前几天或后几天的日期
- HTML生日快乐-生日祝福(烟花+粒子动画)
- html中取颜色快捷键,ps中填充颜色的快捷键是什么?
- Linux 性能分析命令详解
- 对计算机知识的掌握,计算机操作基本知识
- Linux之C++毫秒级计时方法
热门文章
- 【数据库基础知识】plsql安装及配置
- 列表(list)和集合(set)
- 电子政务档案管理系统源码_高校档案信息化建设的必要性
- Android生命周期工具类,Android倒计时工具类
- cheaklist 人机交互界面_10个人机交互系统及界面的设计方案
- html5 视口,html5 – 在媒体查询中更改视口
- 造轮子是什么意思_聊聊在阿里工作一年的收获,什么是真正的技术能力?
- php 5范例代码查询辞典 pdf,PHP 5范例代码查询辞典
- 在服务器客户端怎么启用协议,如何启用客户机的WINS功能
- java禁止js获取cookie_JS里面如何防止浏览器COOKIES溢出