Thread.SpinWait(Int32) Método

Definição

Faz com que um thread espere 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 assinado de 32 bits que define quanto tempo uma thread deve esperar.

Observações

O SpinWait método é útil para implementar bloqueios. As classes no .NET Framework, como Monitor e ReaderWriterLock, utilizam este método internamente. SpinWait essencialmente, coloca o processador num ciclo muito apertado, com a contagem de loops especificada pelo iterations parâmetro. A duração da espera depende, portanto, da velocidade do processador.

Compare isto com o Sleep método. Um thread que chama Sleep fornece o resto da sua fatia atual de tempo de processamento, mesmo que o intervalo especificado seja zero. Especificar um intervalo não nulo para Sleep remove a thread da consideração pelo agendador de threads até que o intervalo de tempo tenha passado.

SpinWait geralmente não é útil para aplicações comuns. Na maioria dos casos, deve usar as classes de sincronização fornecidas pelo .NET Framework; por exemplo, chame Monitor.Enter ou uma instrução que envolva Monitor.Enter (lock em C# ou SyncLock em Visual Basic).

Atenção

No raro caso em que é vantajoso evitar uma mudança de contexto, como quando sabe que uma mudança de estado é iminente, faça uma chamada ao SpinWait método no seu ciclo. A execução do código SpinWait foi concebida para prevenir problemas que possam ocorrer em computadores com múltiplos processadores. Por exemplo, em computadores com múltiplos processadores Intel que utilizam Hyper-Threading tecnologia, SpinWait previne a inanição de processadores em certas situações.

Aplica-se a