MFC 스레드 존재 여부 판단
GetExitCodeThread 함수는 스레드를 가져오는 종료 코드입니다.
함수: GetExitCodeThread()
기능: 끝 라인의 반환값 가져오기
함수 원형: BOOL GetExitCodeThread(HANDLE hThread, LPDWORD lpExitCode);
매개 변수:hThread는 반환 값을 가져오려는 스레드 객체에 대한 핸들을 가리킵니다.
스레드를 저장하는 데 사용되는 lpExitCode 반환값
반환 값: 함수 실행이 성공하면 0이 아닌 값을 반환하고 그렇지 않으면 0(FALSE)을 반환합니다.
첫 번째 파라미터는 루틴 핸들입니다.CreateThread로 루틴을 만들 때 얻을 수 있습니다.
두 번째 파라미터는 DWORD의 지침이다. 사용자는 DWORD 형식의 변수를 사용하여 데이터를 수신해야 한다. 되돌아오는 데이터는 라인의 종료 코드이다. 라인 종료 코드를 통해 라인이 실행 중인지 종료 중인지 판단할 수 있다.또는 라인이 정상적으로 퇴출되었는지 이상 퇴출되었는지 판단할 수 있다.
실행에 성공했을 때 스레드의 상태 코드를 저장합니다. 스레드의 반환값이면 스레드가 실행되었음을 의미하고, 스레드가 실행되지 않았을 경우 STILL로 돌아갑니다.ACTIVE, 스레드의 반환 값이 STILL인 경우ACTIVE, 판단할 수 없습니다.
MSDN 설명:
GetExitCodeThread Function
Retrieves the termination status of the specified thread.
BOOL WINAPI GetExitCodeThread( __in HANDLE hThread, __out LPDWORD lpExitCode );
Parameters
hThread
A handle to the thread.
The handle must have the THREAD_QUERY_INFORMATION access right. For more information, see Thread Security and Access Rights.
lpExitCode
A pointer to a variable to receive the thread termination status. If the specified thread has not terminated and the function succeeds, the termination status returned is STILL_ACTIVE.
Return Value
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
If the thread has terminated and the function succeeds, the termination status returned may be one of the following:
Warning If a thread happens to return STILL_ACTIVE (259) as an error code, applications that test for this value could end up in an infinite loop.
참조 예:
1
int
main()
2
{
3
DWORD exitCode1 = 0;
4
DWORD exitCode2 = 0;
5
DWORD threadId;
6
7
HANDLE hThrd1 = CreateThread(NULL, 0, ThreadFunc1, 0, 0, &threadId );
9
if
(hThrd1)
10
printf("Thread 1 launched");
11
13
HANDLE hThrd2 = CreateThread(NULL, 0, ThreadFunc2, 0, 0, &threadId );
14
if
(hThrd2)
15
printf("Thread 2 launched");
16
18
for
(;;)
19
{
20
printf("Press any key to exit..");
21
getch();
22
GetExitCodeThread(hThrd1, &exitCode1);
23
GetExitCodeThread(hThrd2, &exitCode2);
24
if
( exitCode1 == STILL_ACTIVE )
25
puts("Thread 1 is still running!");
26
27
if
( exitCode2 == STILL_ACTIVE )
28
puts("Thread 2 is still running!");
29
if
( exitCode1 != STILL_ACTIVE && exitCode2 != STILL_ACTIVE )
30
break
;
31
}
32
33
CloseHandle(hThrd1);
34
CloseHandle(hThrd2);
35
36
printf("Thread 1 returned %d", exitCode1);
37
printf("Thread 2 returned %d", exitCode2);
38
return
EXIT_SUCCESS;
39
}
40
41
DWORD WINAPI ThreadFunc1(LPVOID n)
42
{
43
Sleep((DWORD)n*1000*2);
44
return
(DWORD)n * 10;
45
}
46
48
DWORD WINAPI ThreadFunc2(LPVOID n)
49
{
50
Sleep((DWORD)n*1000*2);
51
return
(DWORD)n * 10;
52
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.