Freigeben über


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);