首页
社区
课程
招聘
[讨论]多线程编程中的ExitThread函数?
发表于: 2006-1-9 16:48 10207

[讨论]多线程编程中的ExitThread函数?

HSQ 活跃值
8
2006-1-9 16:48
10207
      当一个子线程要退出时,我们用线程函数返回是否可以直接退出该线程?
我在一个子线程函数内,用以下方式:
      ... ...
      ExitThread(Exitcode); //①
      return 0;   //②
退出该线程,VC++6.0编译通过,且程序运行正常,不过不要①,程序运行也正常。这样做是否是画蛇添足,亦或是使程序运行得更稳定(ExitThread是推荐使用的结束一个线程的方法)。
    另外,线程函数是DWORD类型,其函数返回值怎样获取,比喻子线程函数用
"return x;"退出,我们如何才能得到“X”的值呢?

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 217
活跃值: (99)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
确实是画蛇添足
2006-1-9 18:38
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
老实说 这么用只能在特定情况下 或者 你很熟悉的状况下
假如你的线程里用到C++对象 那么return 前会调用析构函数
或者更一般的说 对于多线程C/C++ 一般使用_beginthreadex函数创建线程 那么这时决不能ExitThread 因为很多资源还没释放呢!
得到返回值
可以用GetExitCode 好像是这个名儿吧 呵呵
2006-1-9 22:18
0
雪    币: 159
活跃值: (339)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
4
去看看《核心编程》里面说得很清楚的
2006-1-10 12:20
0
雪    币: 202
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
1、让一个线程终止运行最好的方法是让线程函数返回;

2、如果你的设计不能满足第一条,而你的程序使用C/C++编写,那你绝不应该调用ExitThread。应用使用Visual C++运行期库函数 _endthreadex。如果你不是使用 Visual C++ 编译器,你的编译器提供商有它自己的 ExitThread 的替代函数。不管这个函数是什么,都必须使用。

要获得一个线程的退出代码的操作必须在另一个线程中进行,使用的API是:

BOOL GetExitCodeThread(HANDLE hThread, PDWORD pdwExitCode) ;
2006-1-18 19:36
0
雪    币: 3006
活跃值: (657)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
子线程return之前 使用 exitthread 设置应该退出码  然后使用getexitcodethread 来获取子线程的退出码
2021-5-20 08:50
0
游客
登录 | 注册 方可回帖
返回
//