C++ (Windows)에서 스레드의 반환 값을 가져 오는 것이 가능한지 궁금한 점이 있습니다. 몇 가지 스레드가 있고 그 중 WaitForMultipleObjects(...)
을 사용합니다. 이것은 쓰레드가 끝날 때까지 기다리고, 그 쓰레드의 인덱스를 반환하고, 모두 정상이다. 그러나 핸들을 사용하여 끝난 스레드의 반환 값을 얻을 수 있기를 원합니다. 예를 들어Windows 스레드의 반환 값은 어떻게 얻을 수 있습니까?
은 :
DWORD WINAPI Thread1(void *parameter){
...
if(...) return 0;
else return -1;
}
DWORD WINAPI Thread2(void *parameter){
...
if(...) return 1;
else return 0;
}
int main(){
HANDLE t1 = CreateThread(0, 0, Thread1, NULL, 0, 0);
HANDLE t2 = CreateThread(0, 0, Thread2, NULL, 0, 0);
HANDLE *threads = new HANDLE[2];
threads[0] = t1;
threads[1] = t2;
int result = WaitForMultipleObjects(2, threads, false, INFINITE);
if(result == 0){
//get the threads value here:
int retVal = SomeFunction(t1); //What is SomeFunction?
}
...
}
나는 GetExitCodeThread(thread)
를 사용하려고했지만 나는 항상 나에게 매우 이상한 정수를주기 때문에 이것은, 시스템 종료 코드를 반환 있으리라 믿고있어. 누구나 방법이나 해결 방법을 알고 있습니까?
저는 항상 GetExitCodeThread를 사용했습니다. 올바르게 사용하고 있습니까? 그것은 스레드 핸들과 DWORD에 대한 포인터를 취하여 GetExitCodeThread의 성공을 반환합니다 (_not_ 스레드의 반환 값이 아닙니다). –
귀하의 질문에 내 대답은 :) – Koying