Я создал тему, используя CreateThread()
с действительными параметрами. На основании простого if-else
условие я возвращаю DWORD
Переменная типа, которая установлена в 1.
hXYZHandles[0] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ProcessSomething, &input, 0, &dThreadIDs[0]);
Тогда внутри функции:
DWORD ProcessSomething(LPVOID)
{
if(some condition)
return 0;
else if(some other condition)
return 1;
}
я WaitForSingleObject()
INFINITE
LY. Тогда я вызываю функцию GetExitCodeThread()
,
WaitForSingleObject(hXYZHandles[0], INFINITE);
BOOL isThisCallSuccessful = GetExitCodeThread(hXYZHandles[0], &dReturnValue[0]);
if (! isThisCallSuccessful)
{
// err
}
Я получаю другое значение, которое НЕ меняется независимо от того, что я делаю. Это всегда 6.
Я также смущен, если я должен использовать WaitForSingleObject
так же как GetExitCodeThread
или я должен просто использовать один из них. На MSDN не упоминается, что два являются заменой друг другу. Но я просто думаю, как, когда WaitForSingleObject
успешно, дескриптор потока на картинке может быть освобожден или в худшем случае может быть назначен другому потоку. затем GetExitCodeThread
будет неудачно с треском.
Задача ещё не решена.