Sospensione dell'esecuzione del thread
Un thread può sospendere e riprendere l'esecuzione di un altro thread. Mentre un thread è sospeso, non è assegnato tempo di esecuzione nell'unità di elaborazione.
Se un thread viene creato in uno stato sospeso (con il flag CREATE_SUSPENDED), non inizia a essere eseguito fino a quando un altro thread non chiama la funzione ResumeThread con un handle per il thread sospeso. Può essere utile per inizializzare lo stato del thread prima di iniziare l'esecuzione. La sospensione di un thread durante la creazione può essere utile per la sincronizzazione monouso, perché ciò garantisce che il thread sospeso esegua il punto di partenza del suo codice quando viene chiamata ResumeThread.
La funzione SuspendThread non deve essere usata per la sincronizzazione dei thread perché non controlla il punto nel codice in cui viene sospesa l'esecuzione del thread. Questa funzione è progettata principalmente per l'uso da parte dei debugger.
Un thread può cedere temporaneamente l'esecuzione per un intervallo specificato chiamando le funzioni Sleep o SleepEx. Questo è particolarmente utile nei casi in cui il thread risponde all'interazione dell'utente, poiché può ritardare abbastanza a lungo l'esecuzione per consentire agli utenti di osservare i risultati delle proprie azioni. Durante l'intervallo di inattività, il thread non è pianificato per essere eseguito sul processore.
La funzione SwitchToThread è simile a Sleep e SleepEx, con la differenza che non è possibile specificare l'intervallo. SwitchToThread consente al thread di rinunciare al relativo intervallo di tempo.