Thread.SpinWait(Int32) Yöntem

Tanım

Bir iş parçacığının parametresi tarafından tanımlanan sayıda beklemesine iterations neden olur.

public:
 static void SpinWait(int iterations);
public static void SpinWait(int iterations);
static member SpinWait : int -> unit
Public Shared Sub SpinWait (iterations As Integer)

Parametreler

iterations
Int32

bir iş parçacığının ne kadar bekleyeceğini tanımlayan 32 bit imzalı tamsayı.

Açıklamalar

SpinWait yöntemi, kilitleri uygulamak için kullanışlıdır. .NET Framework'teki Monitor ve ReaderWriterLock gibi sınıflar bu yöntemi dahili olarak kullanır. SpinWait temelde işlemciyi, parametresi tarafından belirtilen döngü sayısıyla çok sıkı bir döngüye iterations yerleştirir. Bu nedenle bekleme süresi işlemcinin hızına bağlıdır.

Bunu yöntemiyle karşıtlıklı olarak Sleep belirleyin. Çağıran Sleep bir iş parçacığı, belirtilen aralık sıfır olsa bile geçerli işlemci süresinin kalan kısmını verir. için Sleep sıfır olmayan bir aralık belirtilmesi, zaman aralığı geçene kadar iş parçacığını iş parçacığı zamanlayıcısı tarafından dikkate alınmasından kaldırır.

SpinWait genellikle sıradan uygulamalar için yararlı değildir. Çoğu durumda, .NET Framework tarafından sağlanan eşitleme sınıflarını kullanmanız gerekir; örneğin, Monitor.Enter veya Monitor.Enter (C# dilinde lock veya Visual Basic'de SyncLock) sarmalayan bir deyim çağırın.

Caution

Durum değişikliğinin yakın olduğunu bildiğiniz durumlarda, bağlam anahtarından kaçınmanın avantajlı olduğu nadir durumlarda, döngünüzdeki yönteme SpinWait bir çağrı yapın. Yürütülen kod SpinWait , birden çok işlemciye sahip bilgisayarlarda oluşabilecek sorunları önlemek için tasarlanmıştır. Örneğin, Hyper-Threading teknolojisi kullanan birden çok Intel işlemcisi olan bilgisayarlarda işlemcinin SpinWait belirli durumlarda aç kalmaması önlenir.

Şunlara uygulanır