Bagikan melalui


Thread.SpinWait(Int32) Metode

Definisi

Menyebabkan utas menunggu berapa kali ditentukan oleh iterations parameter .

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

Parameter

iterations
Int32

Bilangan bulat bertanda tangan 32-bit yang menentukan berapa lama utas akan menunggu.

Keterangan

Metode SpinWait ini berguna untuk menerapkan kunci. Kelas dalam .NET Framework, seperti Monitor dan ReaderWriterLock, gunakan metode ini secara internal. SpinWait pada dasarnya menempatkan prosesor ke dalam perulangan yang sangat ketat, dengan jumlah perulangan yang ditentukan oleh iterations parameter . Oleh karena itu, durasi tunggu tergantung pada kecepatan prosesor.

Kontraskan ini dengan Sleep metode . Utas Sleep yang memanggil menghasilkan sisa irisan waktu prosesornya saat ini, bahkan jika interval yang ditentukan adalah nol. Menentukan interval bukan nol untuk Sleep menghapus utas dari pertimbangan oleh penjadwal utas hingga interval waktu berlalu.

SpinWait umumnya tidak berguna untuk aplikasi biasa. Dalam kebanyakan kasus, Anda harus menggunakan kelas sinkronisasi yang disediakan oleh .NET Framework; misalnya, panggilan Monitor.Enter atau pernyataan yang membungkus Monitor.Enter (lock dalam C# atau SyncLock di Visual Basic).

Perhatian

Dalam kasus yang jarang terjadi di mana menguntungkan untuk menghindari pengalihan konteks, seperti ketika Anda tahu bahwa perubahan status akan segera terjadi, lakukan panggilan ke SpinWait metode dalam perulangan Anda. Kode SpinWait yang dijalankan dirancang untuk mencegah masalah yang dapat terjadi pada komputer dengan beberapa prosesor. Misalnya, pada komputer dengan beberapa prosesor Intel yang menggunakan teknologi Hyper-Threading, SpinWait mencegah kelaparan prosesor dalam situasi tertentu.

Berlaku untuk