Значение, полученное GetExitCodeThread (), неверно

Я создал тему, используя 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() INFINITELY. Тогда я вызываю функцию GetExitCodeThread(),

WaitForSingleObject(hXYZHandles[0], INFINITE);
BOOL isThisCallSuccessful = GetExitCodeThread(hXYZHandles[0], &dReturnValue[0]);
if (! isThisCallSuccessful)
{
// err
}

Я получаю другое значение, которое НЕ меняется независимо от того, что я делаю. Это всегда 6.

Я также смущен, если я должен использовать WaitForSingleObject так же как GetExitCodeThread или я должен просто использовать один из них. На MSDN не упоминается, что два являются заменой друг другу. Но я просто думаю, как, когда WaitForSingleObject успешно, дескриптор потока на картинке может быть освобожден или в худшем случае может быть назначен другому потоку. затем GetExitCodeThread будет неудачно с треском.

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]