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