Udostępnij za pośrednictwem


SpinLock

Struktura SpinLock jest niskim, wzajemnym elementem pierwotnym synchronizacji wykluczeń, który obraca się, gdy czeka na uzyskanie blokady. Na komputerach wielordzeniowych czas oczekiwania powinien być krótki i gdy rywalizacja jest minimalna, SpinLock może działać lepiej niż inne rodzaje blokad. Zalecamy jednak użycie SpinLock tylko w przypadku określenia przez profilowanie, że System.Threading.Monitor metoda lub Interlocked metody znacznie spowalniają wydajność programu.

SpinLock może dać fragment czasu wątku, nawet jeśli jeszcze nie nabył blokady. Robi to, aby uniknąć inwersji priorytetu wątku i umożliwić modułowi odśmiecania pamięci postęp. Jeśli używasz elementu SpinLock, upewnij się, że żaden wątek nie może przechowywać blokady przez więcej niż krótki przedział czasu i że żaden wątek nie może zablokować, gdy blokada jest zablokowana.

Ponieważ SpinLock jest typem wartości, należy jawnie przekazać go przy użyciu odwołania, jeśli zamierzasz odwoływać się do tej samej blokady.

Aby uzyskać więcej informacji na temat używania tego typu, zobacz System.Threading.SpinLock. Przykład można znaleźć w temacie How to: Use SpinLock for Low-Level Synchronization (Instrukcje: używanie funkcji SpinLock do synchronizacji niskiego poziomu).

SpinLockobsługuje tryb śledzenia wątków-, którego można użyć w fazie opracowywania, aby ułatwić śledzenie wątku, który przechowuje blokadę w określonym czasie. Tryb śledzenia wątków jest bardzo przydatny do debugowania, ale zalecamy wyłączenie go w wersji wydania programu, ponieważ może to spowolnić wydajność. Aby uzyskać więcej informacji, zobacz How to: Enable Thread-Tracking Mode in SpinLock (Jak włączyć tryb śledzenia wątków w funkcji SpinLock).

Zobacz też