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,就无法判断