0

我使用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撒谎。然后我调用函数GetExitCodeThread()

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

我得到了不同的价值,无论我做什么,它都不会改变。它始终是 6。

我也很困惑是否应该使用WaitForSingleObjectas wellGetExitCodeThread或者我应该只使用其中之一。MSDN上没有提到两者是相互替代的。但我只是想,当WaitForSingleObject成功时,图片中的线程句柄可能会被释放,或者在最坏的情况下可能会分配给不同的线程。那就GetExitCodeThread惨败了。

4

0 回答 0