Share via


C28617

advertencia C28617: evite usar el valor devuelto de _beginthread(). En su lugar, use _beginthreadex()

Es más seguro usar _beginthreadex que _beginthread. Si el subproceso generado por _beginthread sale rápidamente, el identificador devuelto al autor de la llamada de _beginthread puede no ser válido o, peor, apuntar a otro subproceso. Sin embargo, el autor de la llamada de _beginthreadex debe cerrar el identificador devuelto por _beginthreadex, por lo que se garantiza que es un identificador válido si _beginthreadex no devolvió un error.

Ejemplos

En el ejemplo de código siguiente se genera esta advertencia.

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

En el ejemplo de código siguiente se evita la advertencia.

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