Megosztás:


SpinLock

A SpinLock struktúra egy alacsony szintű, kölcsönös kizárású szinkronizálási primitív, amely várakozás közben pörög a zárolás megszerzésére. Többmagos számítógépek esetén, ha a várakozási idő várhatóan rövid, és a versengés minimális, SpinLock jobban teljesít a más zárolási típusoknál. Javasoljuk azonban, hogy csak akkor használja SpinLock , ha profilkészítéssel állapítja meg, hogy a System.Threading.Monitor módszer vagy a Interlocked metódusok jelentősen lassítják a program teljesítményét.

SpinLock akkor is átengedheti a szál időszeletét, ha még nem szerezte meg a zárolást. Ezzel elkerülheti a szálprioritású inverziót, és lehetővé teszi a szemétgyűjtő számára a haladást. Amikor használ egy SpinLock, győződjön meg arról, hogy egyetlen szál sem tartja a zárolást hosszabb ideig, mint egy nagyon rövid időtartam, és hogy egyetlen szál sem blokkolódhat, amíg tartja a zárat.

Mivel a SpinLock értéktípus, kifejezetten hivatkozva kell átadnia, ha a két példány ugyanarra a zárolásra kíván hivatkozni.

Ennek a típusnak a használatáról további információt a következő témakörben talál System.Threading.SpinLock. Példa : Útmutató: A SpinLock használata Low-Level szinkronizáláshoz.

SpinLock támogatja a szál-követési módot, amelyet a fejlesztési fázisban használhat a zárolást egy adott időpontban tartó szál nyomon követéséhez. A szálkövetési mód nagyon hasznos a hibakereséshez, de azt javasoljuk, hogy kapcsolja ki a program kiadási verziójában, mert ez lelassíthatja a teljesítményt. További információért lásd: Hogyan: Engedélyezze a Thread-Tracking módot a SpinLockban.

Lásd még