I wanted to do something using multi-threading and all the stuff encapsulated in function foo
.
filterThread = _beginthread (foo, 0,NULL) ;
and I wanted to let foo
return value:
int foo()
{
return iRet;
}
but the prototype of _beginthread _CRTIMP uintptr_t __cdecl _beginthread (_In_ void (__cdecl * _StartAddress) (void *),
_In_ unsigned _StackSize, _In_opt_ void * _ArgList)
shows that foo
must be void which means cannot return value .
Is there any way else i can do to let foo
return value?
To get the return value aka exit code of thread:
Call this function on thread's handle after it has finished,
DWORD ExitCode;
GetExitCodeThread(hThread, &ExitCode);
As an example, consider using _beginthreadex instead,
unsigned __stdcall foo( void* pArguments )
{
_endthreadex( 0 );
return 0;
}
int main()
{
HANDLE hThread;
unsigned threadID;
hThread = (HANDLE)_beginthreadex( NULL, 0, foo, NULL, 0, &threadID );
WaitForSingleObject( hThread, INFINITE );
CloseHandle( hThread );
}