AfxBeginThread
Chiamare questa funzione per creare un nuovo thread.
CWinThread* AfxBeginThread(
AFX_THREADPROC pfnThreadProc,
LPVOID pParam,
int nPriority = THREAD_PRIORITY_NORMAL,
UINT nStackSize = 0,
DWORD dwCreateFlags = 0,
LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL
);
CWinThread* AfxBeginThread(
CRuntimeClass* pThreadClass,
int nPriority = THREAD_PRIORITY_NORMAL,
UINT nStackSize = 0,
DWORD dwCreateFlags = 0,
LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL
);
Parametri
pfnThreadProc
Punta alla funzione di controllo per il thread di lavoro. Non può essere NULL. Questa funzione deve essere dichiarata come segue:UINT __cdecl MyControllingFunction( LPVOID pParam );
pThreadClass
CLASSE DI RUNTIME di un oggetto derivato da CWinThread.pParam
Parametro da passare alla funzione di controllo come illustrato nel parametro alla dichiarazione di funzione in pfnThreadProc.nPriority
La priorità desiderata per il thread. Per un elenco completo e una descrizione delle priorità disponibili, vedere SetThreadPriority in Windows SDK.nStackSize
Specifica la dimensione in byte dello stack per il nuovo thread. Se 0, i valori predefiniti dello stack vengono impostati sullo stack della stessa dimensione del thread di creazione.dwCreateFlags
Specifica un flag aggiuntivo che controlla la creazione del thread. Questo flag può contenere uno di due valori:CREATE_SUSPENDED Iniziare il thread con un conteggio di sospensione di uno. Utilizzare CREATE_SUSPENDED se si desidera inizializzare i dati dei membri dell'oggetto CWinThread, ad esempio m_bAutoDelete o i membri della classe derivata, prima che il thread inizi l'esecuzione. Una volta completata l'inizializzazione, utilizzare CWinThread::ResumeThread per avviare l'esecuzione del thread. Il thread non viene eseguito finché non viene chiamato CWinThread::ResumeThread.
0 Avvia il thread immediatamente dopo la creazione..
lpSecurityAttrs
Punta a una struttura SECURITY_ATTRIBUTES che specifica gli attributi di sicurezza per il thread. Se NULL, verranno utilizzati gli stessi attributi di sicurezza del thread di creazione. Per ulteriori informazioni su questa struttura, vedere Windows SDK.
Valore restituito
Puntatore all'oggetto thread appena creato oppure NULL se si verifica un errore.
Note
Il primo form di AfxBeginThread crea un thread di lavoro. Il secondo form crea un thread che può servire come thread dell'interfaccia utente o come thread di lavoro.
AfxBeginThread crea un nuovo oggetto CWinThread, chiama la relativa funzione CreateThread per avviare l'esecuzione del thread e restituisce un puntatore al thread. Nel corso della routine vengono effettuati controlli per assicurare che tutti gli oggetti siano resi disponibili in modo corretto, nell'eventualità che una parte della creazione non riuscisse. Per terminare il thread, chiamare AfxEndThread dall'interno del thread o restituire dalla funzione di controllo del thread di lavoro.
Il multithreading deve essere attivato dall'applicazione; in caso contrario, questa funzione non riuscirà. Per ulteriori informazioni sull'abilitazione del multithreading, fare riferimento a /MD, /MT, /LD (Utilizza la libreria di runtime) nelle Opzioni del compilatore Visual C++.
Per ulteriori informazioni su AfxBeginThread, vedere gli articoli Multithreading: creazione di thread di lavoro e Multithreading: creazione di thread dell'interfaccia utente.
Esempio
Vedere l'esempio per CSocket::Attach.
Requisiti
Intestazione: afxwin.h