线程的终止_beginthread和_endthre…
2015-12-18 18:15
585 查看
线程内部细节
1.CreateThread 和 _beginthreadex 区别:
CreateThread是系统API,_beginthreadex是CRT(C Run Time Library 运行时库)函数.
_beginthreadex内部会调用CreateThread函数。
_endthreadex会释放_beginthreadex为tiddata结构分配的内存。
如果线程函数中调用了CRT函数(注:不是全部CRT函数 只是其中一部分函数),则该线程函数必须由_beginthreadex而不是CreateThread函数创建。否则会产生内存泄露。
如果在除主线程之外的任何线程中进行一下操作,你就应该使用多线程版本的C runtime
library,并使用_beginthreadex和_endthreadex:
(1)
使用malloc()和free(),或是new和delete
(2)
使用stdio.h或io.h里面声明的任何函数
(3)
使用浮点变量或浮点运算函数
(4)
调用任何一个使用了静态缓冲区的runtime函数,比如:asctime(),strtok()或rand()
2._beginthreadex和_beginthread区别
_beginthreadex内部会自动调用
_endthreadex.
_beginthread内部会自动调用_endthread.
_endthread内部会自动调用CloseHandle关闭当前Thread内核对象的句柄,所以在用_beginthread
时我们不需要在主线程中调用CloseHandle来关闭子线程的句柄。
_endthreadex相比_endthread而言更安全。它不会自动关闭当前Thread内核对象的句柄。所以在用_beginthreadex时我们需要用CloseHandle来关闭子线程的句柄。
参考:http://www.cnblogs.com/lgxqf/archive/2009/02/10.html
1.CreateThread 和 _beginthreadex 区别:
CreateThread是系统API,_beginthreadex是CRT(C Run Time Library 运行时库)函数.
_beginthreadex内部会调用CreateThread函数。
_endthreadex会释放_beginthreadex为tiddata结构分配的内存。
如果线程函数中调用了CRT函数(注:不是全部CRT函数 只是其中一部分函数),则该线程函数必须由_beginthreadex而不是CreateThread函数创建。否则会产生内存泄露。
如果在除主线程之外的任何线程中进行一下操作,你就应该使用多线程版本的C runtime
library,并使用_beginthreadex和_endthreadex:
(1)
使用malloc()和free(),或是new和delete
(2)
使用stdio.h或io.h里面声明的任何函数
(3)
使用浮点变量或浮点运算函数
(4)
调用任何一个使用了静态缓冲区的runtime函数,比如:asctime(),strtok()或rand()
2._beginthreadex和_beginthread区别
_beginthreadex内部会自动调用
_endthreadex.
_beginthread内部会自动调用_endthread.
_endthread内部会自动调用CloseHandle关闭当前Thread内核对象的句柄,所以在用_beginthread
时我们不需要在主线程中调用CloseHandle来关闭子线程的句柄。
_endthreadex相比_endthread而言更安全。它不会自动关闭当前Thread内核对象的句柄。所以在用_beginthreadex时我们需要用CloseHandle来关闭子线程的句柄。
参考:http://www.cnblogs.com/lgxqf/archive/2009/02/10.html
相关文章推荐
- CreateThread与_beginthreadex
- 多线程CreateThread与临界区Create…
- Android 一张图理解getWidth…
- Android 中fill_parent与wrap…
- Android中Activity的生命周期
- 如何配置 Android SDK 以及A…
- Java JDK环境变量配置
- C# 尝试读取或写入受保护的内存,这通常指示其他内存已损坏。错误类型为:System.AccessViolationException。
- JavaScript Cookies
- MPEG4码流格式分析
- javascript制作验证码
- android签名
- python开源库——h5py快速指南
- [leetcode] 21. Merge Two Sorted Lists
- signal(SIGPIPE, SIG_IGN)
- PL/SQL创建简单的触发器trig…
- 在CSS中定义超链接样式a:link、a:v…
- Css样式表中:margin、paddi…
- myeclipse连接Oracle数据库
- 配置myeclipse中Servlet要导入的包