Sospensione dell'esecuzione del thread

Un thread può sospendere e riprendere l'esecuzione di un altro thread. Mentre un thread è sospeso, non è pianificato per l'ora nel processore.

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 chiama la funzione ResumeThread con un handle per il thread sospeso. Ciò può essere utile per inizializzare lo stato del thread prima di iniziare l'esecuzione. La sospensione di un thread alla creazione può essere utile per la sincronizzazione una tantum, perché in questo modo il thread sospeso eseguirà il punto iniziale del codice quando si chiama 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ò produrre temporaneamente l'esecuzione per un intervallo specificato chiamando le funzioni Sleep o SleepEx Questo è utile in particolare nei casi in cui il thread risponde all'interazione dell'utente, perché può ritardare l'esecuzione abbastanza a lungo per consentire agli utenti di osservare i risultati delle azioni. Durante l'intervallo di sospensione, il thread non è pianificato per l'ora nel processore.

La funzione SwitchToThread è simile a Sleep e SleepEx, ad eccezione del fatto che non è possibile specificare l'intervallo. SwitchToThread consente al thread di rinunciare alla sua sezione temporale.