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