Thread.SpinWait(Int32) Метод

Определение

Вынуждает поток выполнять ожидание столько раз, сколько определено параметром 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)

Параметры

iterations
Int32

32-разрядное знаковое целое число, определяющее, как долго потоку ожидать.

Комментарии

Метод SpinWait полезен для реализации блокировок. Классы в платформа .NET Framework, такие как Monitor и ReaderWriterLock, используют этот метод для внутренних целей. SpinWait по сути, помещает процессор в очень жесткий цикл с числом циклов, заданным параметром iterations . Таким образом, длительность ожидания зависит от скорости процессора.

Сравните это с методом Sleep . Поток, вызывающий Sleep , возвращает оставшуюся часть текущего среза процессорного времени, даже если указанный интервал равен нулю. Указание ненулевых интервалов для Sleep удаляет поток из рассмотрения планировщиком потоков до истечения интервала времени.

SpinWait обычно не используется для обычных приложений. В большинстве случаев следует использовать классы синхронизации, предоставляемые платформа .NET Framework, например вызов Monitor.Enter или оператор, который заключает Monitor.Enter в оболочку (lock в C# или SyncLock в Visual Basic).

Внимание!

В редких случаях, когда рекомендуется избежать переключения контекста, например когда известно, что изменение состояния неминуемо, вызовите метод в цикле SpinWait . Выполнение кода SpinWait предназначено для предотвращения проблем, которые могут возникнуть на компьютерах с несколькими процессорами. Например, на компьютерах с несколькими процессорами Intel, используюющими Hyper-Threading технологию, SpinWait предотвращает нехватку процессора в определенных ситуациях.

Применяется к