C28617
Warnung C28617: Vermeiden Sie die Verwendung des Rückgabewerts von _beginthread(). Verwenden Sie stattdessen _beginthreadex()
Es ist sicherer , _beginthreadex als _beginthread zu verwenden. Wenn der von _beginthread erzeugte Thread schnell beendet wird, kann das an den Aufrufer von _beginthread zurückgegebene Handle ungültig sein oder, schlimmer noch, auf einen anderen Thread verweisen. Das von _beginthreadex zurückgegebene Handle muss jedoch vom Aufrufer von _beginthreadex geschlossen werden, sodass es garantiert ein gültiges Handle ist, wenn _beginthreadex keinen Fehler zurückgegeben hat.
Beispiele
Im folgenden Codebeispiel wird diese Warnung generiert.
hThread = (HANDLE)_beginthread (&SecondThreadFunc, 0, &args);
WaitForSingleObject (hThread, INFINITE);
Im folgenden Codebeispiel wird die Warnung vermieden.
hThread = (HANDLE)_beginthreadex ( NULL, 0,
&SecondThreadFunc,
&args, 0, &threadID);
WaitForSingleObject (hThread, INFINITE);
CloseHandle(hThread);