GetExitCodeThread判断线程是否执行完

来源:互联网 发布:和平网络电视tv破解版 编辑:程序博客网 时间:2024/05/22 04:30
 
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,就无法判断 
原创粉丝点击