Me preguntaba si es posible (y si es así, cómo) obtener el valor de retorno de un hilo en C++ (Windows). Tengo varios hilos, y uso WaitForMultipleObjects(...)
en ellos. Esto espera hasta que se hace un hilo, y devuelve el índice de dicho hilo, y todo está bien. Sin embargo, quiero poder obtener el valor de retorno del subproceso que terminó de usar su identificador.¿Cómo se puede obtener el valor de retorno de un hilo de Windows?
Por ejemplo:
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?
}
...
}
me han tratado de utilizar GetExitCodeThread(thread)
pero estoy suponiendo que esto devuelve un código de salida del sistema, ya que siempre me da una muy extraña entero. ¿Alguien sabe una forma o una solución alternativa?
Siempre he usado GetExitCodeThread. ¿Estás seguro de que lo estás usando correctamente? Toma un identificador de subproceso y un puntero a un DWORD y devuelve el éxito de GetExitCodeThread (_not_ el valor de retorno del subproceso). –
Tu pregunta es mi respuesta :) – Koying