Mi stavo chiedendo se è possibile (e in tal caso, come) ottenere il valore di ritorno di un thread in C++ (Windows). Ho diversi thread e io uso WaitForMultipleObjects(...)
su di essi. Questo attende fino a quando un thread è fatto, e restituisce l'indice di detto thread, e tutto va bene. Tuttavia, voglio essere in grado di ottenere il valore restituito dal thread che ha terminato l'utilizzo del suo handle.Come si può ottenere il valore di ritorno di un thread di Windows?
Ad esempio:
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?
}
...
}
ho cercato di utilizzare GetExitCodeThread(thread)
ma sto assumendo questo restituisce un codice di uscita del sistema, in quanto mi dà sempre una strana intero. Qualcuno conosce un modo o una soluzione?
Ho sempre utilizzato GetExitCodeThread. Sei sicuro di usarlo correttamente? Prende un handle di thread e un puntatore a un DWORD e restituisce il successo di GetExitCodeThread (_non_ il valore di ritorno del thread). –
La tua domanda è la mia risposta :) – Koying