Sdílet prostřednictvím


SpinLock

Struktura SpinLock je primitivní synchronizace vzájemného vyloučení nízké úrovně, která se roztáčí, zatímco čeká na získání zámku. V počítačích s více jádry může být doba čekání krátká a když je kolize minimální, SpinLock může fungovat lépe než jiné druhy zámků. Doporučujeme však použít SpinLock pouze tehdy, když určíte profilací, že System.Threading.Monitor metoda nebo Interlocked metody výrazně zpomalují výkon programu.

SpinLock může přinést časový řez vlákna, i když ještě nebyl získán zámek. Tím se vyhnete inverzi s prioritou vlákna a povolíte uvolňování paměti, aby bylo možné pokračovat. Pokud používáte SpinLock, ujistěte se, že žádné vlákno nemůže držet zámek pro více než velmi krátký časový rozsah a že žádné vlákno nemůže blokovat, zatímco drží zámek.

Protože SpinLock je typ hodnoty, musíte jej explicitně předat odkazem, pokud chcete, aby dvě kopie odkazovat na stejný zámek.

Další informace o použití tohoto typu naleznete v tématu System.Threading.SpinLock. Příklad najdete v tématu Postupy: Použití spinlocku pro synchronizaci nízké úrovně.

SpinLockpodporuje režim sledování vláken-, který můžete použít během vývojové fáze, aby bylo možné sledovat vlákno, které drží zámek v určitém okamžiku. Režim sledování vláken je velmi užitečný pro ladění, ale doporučujeme ho vypnout ve verzi programu, protože může zpomalit výkon. Další informace naleznete v tématu Postupy: Povolení režimu sledování vláken v spinLock.

Viz také