0

CreateThread()有効なパラメーターを使用してスレッドを作成しました。単純な条件に基づいて、1 に設定された型変数if-elseを返します。DWORD

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嘘をつきます。次に function を呼び出しますGetExitCodeThread()

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

私は何をしても変わらない、異なる価値を手に入れます。常に 6 です。

WaitForSingleObjectまた、これらのいずれかを使用する必要があるのか​​ 、GetExitCodeThreadそれとも使用する必要があるのか​​ も混乱しています。MSDN では、2 つが互いの代わりになることは言及されていません。ただ、WaitForSingleObject成功したら画像のスレッドハンドルが解放されるか、最悪の場合は別のスレッドに割り当てられる可能性があると単純に考えています。それならGetExitCodeThread惨めに失敗するでしょう。

4

0 に答える 0