VC获取子线程入口函数的退出码(分别由CreateThread,_beginthread,_beginthreadex与AfxbeginThread 创建的子线程 )

本文介绍了在VC中如何获取由CreateThread, _beginthread, _beginthreadex与AfxbeginThread创建的子线程的入口函数退出码。通过GetExitCodeThread()函数可以获取CreateThread创建的子线程退出码,但AfxBeginThread和_beginthread创建的子线程需要特殊处理,因为它们会自动关闭线程句柄。解决方案包括使用ExitThread, AfxEndThread, _endthreadex等函数来设置子线程的退出码。" 126695130,7614044,Java在线点餐系统实现,"['Java开发', 'Servlet技术', 'Web开发', 'MySQL数据库', '管理系统']
摘要由CSDN通过智能技术生成

       在 VC 编程中,若是涉及到多线程编程时,有时我们也需要根据情况获取子线程入口函数的退出码,以便根据具体的程序运行情况做相应的处理。


       之前我在使用 VC 开发程序时,也遇到过需要获取子线程入口函数的退出码的问题,由于起初没有做过相似的程序,所以只会定义一个全局变量来根据情况,在子线程的入口函数里再为其赋予相应的值。虽然这也是一种方法,但根本不能决定根本的问题,而且若程序中的全局变量定义太多的话又容易造成程序的混乱,但是根据线程入口函数的声明方式,明显是有返回值的,所以我们可以根据它来在主线程直接获取子线程的退出码


       因此我上网搜索了一下,网上基本都说可以通过在主 线程里面直接调用 GetExitCodeThread() 函数来得到子线程入口函数的退出码。

 

       GetExitCodeThread()这个函数确实可以得到子线程入口函数的退出码,但是真要使用它来得倒子线程入口函数的退出码的话是有条件的。我在网上搜多了许久,都没有具体说到这点,很零碎,最后我根据自己的实践,在结合 MSDN 上面的介绍,以及网上的一些资料,终于成功解决的这个问题。以下我就把我的总结归纳一下,以便以后查询时可以用到,同时,也希望能帮到其他同仁们!

 

  首先,GetExitCodeThread()这个函数可以直接得到由 CreateThread() 创建的子线程入口函数的退出码。以下我举个测试的例子吧!

先创建一个基于MFC的控制台工程,这样比较方便测试。这个不用我来教大家怎么创建吧,呵呵!

然后在源文件开头,可以在 main 函数外面定义一下变量:

HANDLE hThread;
DWORD errCode = 100;

同时声明子线程入口函数:

DWORD WINAPI ThreadFunc( LPVOID lpParameter );

 

接着在特定位置添加以下代码:

好了,现在就是编写子线程入口函数了,代码如下:

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值