C28617

avviso C28617: evitare di usare il valore restituito di _beginthread(). Usare invece _beginthreadex()

È più sicuro usare _beginthreadex rispetto a _beginthread. Se il thread generato da _beginthread viene chiuso rapidamente, l'handle restituito al chiamante di _beginthread potrebbe non essere valido o, peggio, puntare a un altro thread. Tuttavia, l'handle restituito da _beginthreadex deve essere chiuso dal chiamante di _beginthreadex, quindi è garantito che sia un handle valido se _beginthreadex non ha restituito un errore.

Esempi:

L'esempio di codice seguente genera questo avviso.

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

Nell'esempio di codice seguente viene evitato l'avviso.

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