Thread.SpinWait(Int32) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Faz com que um thread aguarde o número de vezes definido pelo iterations parâmetro.
public:
static void SpinWait(int iterations);
public static void SpinWait(int iterations);
static member SpinWait : int -> unit
Public Shared Sub SpinWait (iterations As Integer)
Parâmetros
- iterations
- Int32
Um inteiro com sinal de 32 bits que define quanto tempo um thread deve esperar.
Comentários
O SpinWait método é útil para implementar bloqueios. Classes no .NET Framework, como Monitor e ReaderWriterLock, usam esse método internamente.
SpinWait Essencialmente, coloca o processador em um loop muito apertado, com a contagem de loop especificada pelo iterations parâmetro. A duração da espera, portanto, depende da velocidade do processador.
Contraste isso com o Sleep método. Um thread que chama Sleep produz o restante de sua fatia atual do tempo do processador, mesmo que o intervalo especificado seja zero. Especificar um intervalo diferente de zero para Sleep remover o thread da consideração pelo agendador de threads até que o intervalo de tempo tenha decorrido.
SpinWait geralmente não é útil para aplicativos comuns. Na maioria dos casos, você deve usar as classes de sincronização fornecidas pelo .NET Framework; por exemplo, chamar Monitor.Enter ou uma instrução que encapsula Monitor.Enter (lock em C# ou SyncLock em Visual Basic).
Caution
No caso raro em que é vantajoso evitar uma opção de contexto, como quando você sabe que uma alteração de estado é iminente, faça uma chamada para o SpinWait método em seu loop. O código SpinWait é executado para evitar problemas que podem ocorrer em computadores com vários processadores. Por exemplo, em computadores com vários processadores Intel que empregam tecnologia Hyper-Threading, SpinWait evita a falta de processador em determinadas situações.