Как можно получить возвращаемое значение потока Windows?

Мне просто интересно, возможно ли (и если да, то как) получить возвращаемое значение потока в 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) , но предполагаю это возвращает системный код выхода, так как он всегда дает мне очень странное целое число. Кто-нибудь знает способ или обходной путь?

7
задан Jamal 28 February 2015 в 11:10
поделиться