Поделиться через


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