C28617

警告 C28617:避免使用 _beginthread () 的返回值。 请改用 _beginthreadex ()

使用 _beginthreadex_beginthread更安全。 如果 _beginthread 生成的线程迅速退出,则返回给 _beginthread 调用方的句柄可能无效,或者更糟的是指向另一个线程。 但是, _beginthreadex 返回的句柄必须由 _beginthreadex 的调用方关闭,因此,如果 _beginthreadex 未返回错误,则保证它是有效的句柄。

示例

下面的代码示例生成此警告。

hThread = (HANDLE)_beginthread (&SecondThreadFunc, 0, &args);
WaitForSingleObject (hThread, INFINITE);

下面的代码示例避免了警告。

hThread = (HANDLE)_beginthreadex ( NULL, 0,
                                   &SecondThreadFunc,
                                   &args, 0, &threadID);
WaitForSingleObject (hThread, INFINITE);
CloseHandle(hThread);