Compartilhar via


C28617

aviso C28617: evite usar o valor retornado de _beginthread(). Em vez disso, use _beginthreadex()

É mais seguro usar _beginthreadex do que _beginthread. Se o thread gerado por _beginthread for encerrado rapidamente, o identificador retornado ao chamador de _beginthread poderá ser inválido ou, pior, apontar para outro thread. No entanto, o identificador retornado por _beginthreadex precisa ser fechado pelo chamador de _beginthreadex, portanto, é garantido que ele seja um identificador válido se _beginthreadex não retornou um erro.

Exemplos

O exemplo de código a seguir gera esse aviso.

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

O exemplo de código a seguir evita o aviso.

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