在《windows核心编程》第五版的148下面有个说明。
是这么说的:
终止线程运行的推荐方法是让他的线程函数返回。但是,如果使用本节描述的方法,务必注意 ExitThread 函数是用于“杀死”线程的 windows 函数。 如果要写 C/C++ 代码,就绝对不要调用 ExitThread。相反,应该使用 C++ 运行库函数 _endthreadex。如果使用的不是 Microsoft 的 C++ 编译器,那么编译器供应商应该提供他们自己的 ExitThread 替代函数。不管这个替代函数是什么,都必须使用它。本章稍后将具体解释 _endthreadex 的用途及其重要性。
C/C++代码不是windows程序? 或者说不是windows代码? C/C++代码是啥意思?
是这么说的:
终止线程运行的推荐方法是让他的线程函数返回。但是,如果使用本节描述的方法,务必注意 ExitThread 函数是用于“杀死”线程的 windows 函数。 如果要写 C/C++ 代码,就绝对不要调用 ExitThread。相反,应该使用 C++ 运行库函数 _endthreadex。如果使用的不是 Microsoft 的 C++ 编译器,那么编译器供应商应该提供他们自己的 ExitThread 替代函数。不管这个替代函数是什么,都必须使用它。本章稍后将具体解释 _endthreadex 的用途及其重要性。
C/C++代码不是windows程序? 或者说不是windows代码? C/C++代码是啥意思?
解决方案 »
- Socket初级问题?
- mfc 在一个CDialog上添加一个CWnd,CWnd上创建一个edit 控件,为什么鼠标点击edit控件时,edit控件仍然无法正常获得焦点?
- 控件在IDE中被复制,控件能收到什么通知消息吗?
- BerkeleyDb同时打开同一个文件中的多个表的问题!
- 有关winpcap检测网卡的问题?
- USB摄像头实时视频捕获时如何加上时间和文字说明?vc实现
- 这是什么错误信息啊??
- 我想使得对话框显示在主程序的中央怎样实现?取空格函数是什么?
- 定义对象的问题?(初级)
- bho插件如何带资源文件发布
- 窗体被置后问题,好心人帮帮忙
- 怎样将宏名转换成字符串?如将IDS_WRITE装换成“IDS_WRITE”??
因为C/C++运行库有某些特性比如errno这样的全局变量,如果用单纯的Windows线程API,会导致竞态,所以必须有额外的包装函数,专门分配和管理新的线程专属变量,防止不同线程公用同一个变量的情况。
如果你完全不用C/C++标准库函数,比如fopen什么的,只使用Windows API的话,是没问题的,但是一般很难彻底保证,所以还是用_beginthreadex/_exitthreadex。
比如用Delphi就可以直接用CreateThread,因为它没有C/C++那种运行库内部静态变量。