Teilen über


SpinLock

Die SpinLock-Struktur ist eine Synchronisierungsprimitive auf niedriger Ebene mit gegenseitigem Ausschluss, die die Schleife durchläuft, während sie darauf wartet, eine Sperre abzurufen. Wenn Wartezeiten auf Mehrkerncomputern kurz und Konflikte minimal sein sollen, bietet SpinLock einen Leistungsvorteil gegenüber anderen Arten von Sperren. Sie sollten SpinLock jedoch nur verwenden, wenn Sie durch Profilerstellung bestimmen, dass die System.Threading.Monitor- oder Interlocked-Methode die Leistung des Programms erheblich beeinträchtigen.

SpinLock könnte das Zeitsegment des Threads selbst dann erzeugen, wenn die Sperre noch nicht abgerufen wurde. Dies soll eine Umkehrung der Threadpriorität vermeiden und den Fortschritt des Garbage Collectors aktivieren. Stellen Sie bei Verwendung von SpinLock sicher, dass kein Thread die Sperre für mehr als einen sehr kurzen Zeitraum aufrechterhalten kann, und dass kein Thread blockieren kann, während er die Sperre aufrechterhält.

Da SpinLock ein Werttyp ist, müssen Sie SpinLock explizit als Verweis übergeben, wenn die beiden Kopien auf die gleiche Sperre verweisen sollen.

Weitere Informationen zum Verwenden dieses Typs finden Sie unter System.Threading.SpinLock. Ein Beispiel finden Sie unter Gewusst wie: Synchronisierung auf niedriger Ebene mit SpinLock.

SpinLock unterstützt einen Thread-Nachverfolgungsmodus, mit dem Sie während der Entwicklungsphase den Thread nachverfolgen können, der die Sperre zu einem bestimmten Zeitpunkt aufrechterhält. Der Thread-Nachverfolgungsmodus ist sehr nützlich für das Debuggen, aber Sie sollten ihn in der endgültigen Produktversion des Programms deaktivieren, da er die Leistung beeinträchtigen könnte. Weitere Informationen finden Sie unter Gewusst wie: Aktivieren des Modus zum Nachverfolgen von Threads in SpinLock.

Siehe auch