Мне просто интересно, возможно ли (и если да, то как) получить возвращаемое значение потока в C ++ (Windows).У меня есть несколько потоков, и я использую WaitForMultipleObjects(...)
на них.Это ждет, пока поток не будет завершен, и возвращает индекс указанного потока, и все хорошо.Однако я хочу иметь возможность получить возвращаемое значение потока, который закончил, используя его дескриптор.
Например:
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)
, ноЯ предполагаю, что это возвращает системный код завершения, поскольку он всегда дает мне очень странное целое число.Кто-нибудь знает способ или обходной путь?