Freigeben über


SpinLock

Die SpinLock-Struktur ist ein Synchronisierungsgrundelement auf niedriger Ebene für den gegenseitigen Ausschluss, das einen Spin-Vorgang ausführt, während es auf den Erhalt einer Sperre wartet. Wenn Multicore-Computer verwendet werden und Wartezeiten normalerweise kurz sind und nur wenige Konflikte auftreten, bietet SpinLock eine bessere Leistung als andere Arten von Sperren. Die Verwendung von SpinLock ist jedoch nur zu empfehlen, wenn Sie mithilfe der Profilerstellung ermitteln, dass die System.Threading.Monitor-Methode oder die Interlocked-Methode die Leistung des Programms erheblich verlangsamt.

SpinLock ergibt möglicherweise den Zeitanteil des Threads, auch wenn die Sperre noch nicht abgerufen wurde. Auf diese Weise soll die Umkehrung der Threadpriorität verhindert und dem Garbage Collector ermöglicht werden, Fortschritte zu machen. Stellen Sie beim Verwenden von SpinLock sicher, dass kein Thread die Sperre für mehr als einen sehr kurzen Zeitraum besitzen kann und dass kein Thread während des Zeitraums blockieren kann.

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

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

SpinLock unterstützt einen Modus zum Nachverfolgen von Threads, den Sie während der Entwicklungsphase verwenden können, um den Thread nachzuverfolgen, der die Sperre zum jeweiligen Zeitpunkt besitzt. Der Modus zum Nachverfolgen von Threads ist sehr hilfreich beim Debugging. Es wird jedoch empfohlen, dass Sie den Modus in der Releaseversion des Programms deaktivieren, weil sich dadurch die Leistung verschlechtern kann. Weitere Informationen finden Sie unter Gewusst wie: Aktivieren des Modus zum Nachverfolgen von Threads in SpinLock.

Siehe auch

Weitere Ressourcen

Threadingobjekte und -features