Suspendendo a execução do thread

Um thread pode suspender e retomar a execução de outro thread. Enquanto um thread é suspenso, ele não é agendado por tempo no processador.

Se um thread for criado em um estado suspenso (com o sinalizador CREATE_SUSPENDED ), ele não começará a ser executado até que outro thread chame a função ResumeThread com um identificador para o thread suspenso. Isso pode ser útil para inicializar o estado do thread antes que ele comece a ser executado. Suspender um thread na criação pode ser útil para sincronização única, pois isso garante que o thread suspenso execute o ponto de partida de seu código quando você chamar ResumeThread.

A função SuspendThread não se destina a ser usada para sincronização de thread porque não controla o ponto no código no qual a execução do thread está suspensa. Essa função foi projetada principalmente para uso por depuradores.

Um thread pode gerar temporariamente sua execução para um intervalo especificado chamando as funções Sleep ou SleepEx Isso é útil especialmente nos casos em que o thread responde à interação do usuário, pois pode atrasar a execução por tempo suficiente para permitir que os usuários observem os resultados de suas ações. Durante o intervalo de suspensão, o thread não está agendado para o tempo no processador.

A função SwitchToThread é semelhante a Sleep e SleepEx, exceto que você não pode especificar o intervalo. SwitchToThread permite que o thread desista de sua fatia de tempo.