Delen via


SpinLock

De SpinLock structuur is een primitieve synchronisatie van wederzijdse uitsluiting op laag niveau die draait terwijl het wacht om een vergrendeling te verkrijgen. Op multicore-computers, wanneer wachttijden naar verwachting kort zijn en wanneer conflicten minimaal zijn, SpinLock kunnen ze beter presteren dan andere soorten vergrendelingen. We raden u echter aan alleen te gebruiken SpinLock wanneer u bepaalt door profilering dat de System.Threading.Monitor methode of de Interlocked methoden de prestaties van uw programma aanzienlijk vertragen.

SpinLock kan het tijdssegment van de thread opleveren, zelfs als deze de vergrendeling nog niet heeft verkregen. Dit doet u om inversie van threadprioriteit te voorkomen en de garbagecollector in staat te stellen voortgang te boeken. Wanneer u een SpinLockthread gebruikt, moet u ervoor zorgen dat geen thread de vergrendeling meer dan een korte tijdsduur kan vasthouden en dat er geen thread kan blokkeren terwijl deze de vergrendeling vasthoudt.

Omdat SpinLock een waardetype is, moet u dit expliciet doorgeven als u van plan bent de twee kopieën te verwijzen naar dezelfde vergrendeling.

Zie voor meer informatie over het gebruik van dit type System.Threading.SpinLock. Zie Voor een voorbeeld : SpinLock gebruiken voor synchronisatie op laag niveau.

SpinLockondersteunt een threadtraceringsmodus- die u tijdens de ontwikkelingsfase kunt gebruiken om de thread bij te houden die de vergrendeling op een bepaald tijdstip vasthoudt. De threadtraceringsmodus is erg handig voor foutopsporing, maar we raden u aan deze uit te schakelen in de releaseversie van uw programma, omdat dit de prestaties kan vertragen. Zie Procedure voor meer informatie: De modus Threadtracking inschakelen in SpinLock.

Zie ook