Thread.SpinWait(Int32) Metódus

Definíció

A szál a paraméter által meghatározott hányszor várakozik 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)

Paraméterek

iterations
Int32

Egy 32 bites aláírt egész szám, amely meghatározza, hogy mennyi ideig várjon egy szál.

Megjegyzések

Ez SpinWait a módszer a zárolások implementálására használható. A .NET-keretrendszer osztályai( például Monitor és ReaderWriterLock) belsőleg használják ezt a módszert. SpinWait lényegében egy nagyon szoros hurokba helyezi a processzort, a paraméter által iterations megadott ciklusszámmal. A várakozás időtartama tehát a processzor sebességétől függ.

Ezzel szemben a metódussal Sleep . A meghívó Sleep szál az aktuális processzoridő fennmaradó szeletét adja meg, még akkor is, ha a megadott időköz nulla. Ha nem nulla időközt Sleep ad meg, akkor a szálat a szálütemező addig nem veszi figyelembe, amíg az időintervallum el nem telik.

SpinWait általánosan nem hasznos a szokásos alkalmazásokhoz. A legtöbb esetben a .NET-keretrendszer által biztosított szinkronizálási osztályokat kell használnia, például hívja meg a Monitor.Enter vagy a Monitor.Enter sortörést tartalmazó utasítást (lock C# vagy SyncLock Visual Basic).

Figyelmeztetés

Abban a ritka esetben, amikor előnyös elkerülni egy környezeti kapcsolót, például ha tudja, hogy küszöbön áll egy állapotváltozás, hívja fel a SpinWait hurok metódusát. SpinWait A kód végrehajtásának célja, hogy megakadályozza a több processzorral rendelkező számítógépeken előforduló problémákat. Az Hyper-Threading technológiát alkalmazó több Intel processzorral rendelkező számítógépeken például bizonyos helyzetekben megelőzhető a SpinWait processzorok éhezése.

A következőre érvényes: