Thread.SpinWait(Int32) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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 (lock
C# 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.