GetExitCodeThread判断线程是否执行完

 
int main()

{

    HANDLE hThrd1;

    HANDLE hThrd2;

    DWORD exitCode1 = 0;

    DWORD exitCode2 = 0;

    DWORD threadId;

    

    hThrd1 = CreateThread(NULL,

        0,

        ThreadFunc,

        (LPVOID)1,

        0,

        &threadId );

    if (hThrd1)

        printf("Thread 1 launched/n");



    hThrd2 = CreateThread(NULL,

        0,

        ThreadFunc,

        (LPVOID)2,

        0,

        &threadId );

    if (hThrd2)

        printf("Thread 2 launched/n");



    for (;;)

    {

        printf("Press any key to exit../n");

        getch();



        GetExitCodeThread(hThrd1, &exitCode1);

        GetExitCodeThread(hThrd2, &exitCode2);

        if ( exitCode1 == STILL_ACTIVE )

            puts("Thread 1 is still running!");

        if ( exitCode2 == STILL_ACTIVE )

            puts("Thread 2 is still running!");

        if ( exitCode1 != STILL_ACTIVE

            && exitCode2 != STILL_ACTIVE )

            break;

    }



    CloseHandle(hThrd1);

    CloseHandle(hThrd2);



    printf("Thread 1 returned %d/n", exitCode1);

    printf("Thread 2 returned %d/n", exitCode2);



    return EXIT_SUCCESS;

}





DWORD WINAPI ThreadFunc(LPVOID n)

{

    Sleep((DWORD)n*1000*2);

    return (DWORD)n * 10;

}
 
 
BOOL GetExitCodeThread( 

HANDLE hThread, 

LPDWORD lpExitCode

); 
返回值:TRUE:执行成功,FALSE:执行失败
hThread:需要判断的线程句柄
lpExitCode:执行成功时,存放线程的状态码,如果是线程的返回值,表示线程执行完,
如果线程没执行完,返回STILL_ACTIVE,如果线程的返回值就是STILL_ACTIVE,就无法判断 
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值