Compartilhar via


Thread.SpinWait(Int32) Método

Definição

Faz com que um thread aguarde o número de vezes definido pelo parâmetro iterations.

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 deverá aguardar.

Comentários

O SpinWait método é útil para implementar bloqueios. As classes no .NET Framework, como Monitor e , usam esse método ReaderWriterLock internamente. SpinWait essencialmente coloca o processador em um loop muito rígido, com a contagem de loops especificada pelo iterations parâmetro . Portanto, a duração da espera depende da velocidade do processador.

Contraste isso com o Sleep método . Um thread que chama gera o restante de sua fatia atual de tempo do processador, mesmo Sleep que o intervalo especificado seja zero. Especificar um intervalo diferente de zero para remove o thread da consideração pelo agendador de thread até que o intervalo de Sleep 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 ou uma instrução que envolva ( em C# ou em Monitor.Enter Monitor.Enter lock SyncLock Visual Basic).

Cuidado

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 método em SpinWait seu loop. O código SpinWait executado foi projetado para evitar problemas que podem ocorrer em computadores com vários processadores. Por exemplo, em computadores com vários processadores Intel que empregam Hyper-Threading tecnologia, impede a insinuidade SpinWait do processador em determinadas situações.

Aplica-se a