Aracılığıyla paylaş


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. ve gibi MonitorReaderWriterLock.NET Framework 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 sokar. Bu nedenle bekleme süresi işlemcinin hızına bağlıdır.

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

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

Dikkat

Bağlam anahtarından kaçınmanın avantajlı olduğu nadir durumlarda, örneğin durum değişikliğinin çok az olduğunu bildiğiniz durumlarda, döngünüzde yöntemine 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ç kalması önlenir.

Şunlara uygulanır