Thread.SpinWait(Int32) Método

Definição

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.

Aplica-se a