Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 oddać przedział czasu procesora, nawet jeśli jeszcze nie uzyskał 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 utrzymywać blokady dłużej niż przez bardzo krótki czas oraz że żaden wątek nie jest blokowany, kiedy posiada blokadę.
Ponieważ SpinLock jest typem strukturalnym, musisz wprost przekazać go przez odwołanie, jeśli chcesz, aby obie kopie odnosiły się do tego samego SpinLock.
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 Low-Level).
SpinLockobsługuje trybśledzenia-, 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 Thread-Tracking w funkcji SpinLock).