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中的类(如 MonitorReaderWriterLock)在内部使用此方法。 SpinWait 实质上,使用 参数指定的循环计数将处理器置于非常紧密的循环中 iterations 。 因此,等待的持续时间取决于处理器的速度。

将此与 Sleep 方法对比。 调用 Sleep 的线程会生成其当前处理器时间切片的剩余部分,即使指定的间隔为零也是如此。 为 Sleep 指定非零间隔会删除线程计划程序考虑的线程,直到时间间隔已过。

SpinWait 通常对普通应用程序不有用。 在大多数情况下,应使用.NET Framework提供的同步类;例如,调用 Monitor.Enter 或 语句,以 C# SyncLock 或 Visual Basic) 包装Monitor.Enter (lock

注意

在极少数情况下,最好避免上下文切换,例如,当知道即将发生状态更改时,请在循环中调用 SpinWait 方法。 执行代码 SpinWait 旨在防止在具有多个处理器的计算机上可能出现的问题。 例如,在具有采用Hyper-Threading技术的多个 Intel 处理器的计算机上, SpinWait 在某些情况下可防止处理器不足。

适用于