Sono un principiante nell'API di Windows e recentemente ho imparato che non dovrei usare CreateThread e TerminateThread. Sono passato a _beginthreadex
, tuttavia non sono sicuro di come dovrei use _endthreadex
?Dove uso _endthreadex - windows API
Per esempio, ecco un funzione di base stavo testando con:
// MyThreadFunction - outputs "#.) I Work" and ends
unsigned int __stdcall MyThreadFunction(void * lpParam)
{
int i = (int)lpParam;
cout << i << ".) I work! " << endl;
_endthreadex(0);
return 0;
}
È il mio posizionamento di _endthreadex
corretta? Ce l'ho prima del ritorno 0, che mi sembra strano? Ho letto nelle pagine di msdn su _endthreadex
che viene chiamato automaticamente quando una funzione termina, ma dovresti chiamarla per una migliore pulizia della memoria, ed è per questo che ho provato a inserirla. Non sembra giusto, scusa se è così una brutta domanda. Voglio solo assicurarmi che stia facendo tutto al meglio delle mie capacità
Niente di sbagliato nell'uso di CreateThread. A meno che non si stia ancora utilizzando l'MSVC antico. –
@DavidHeffernan Il CRT collegato in modo statico aveva problemi di perdita di memoria se non si utilizzava _begin/_endthread. Hai un riferimento per questo cambiamento? –