csharp / expert
Snippet
Atomare Zustandsverwaltung mit Compare-And-Swap
Die Methode Interlocked.CompareExchange implementiert eine Compare-And-Swap (CAS)-Operation, die Grundlage für sperrfreie Nebenläufigkeit. Sie prüft atomar, ob ein Wert einem erwarteten entspricht, und ersetzt ihn gegebenenfalls. Dies vermeidet den Overhead herkömmlicher Sperren (Mutexes) und verhindert Thread-Kontextwechsel, was für Systeme mit hohem Durchsatz entscheidend ist.
snippet.cs
csharp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System.Threading;public class LockFreeStack{private int _state = 0;public void UpdateState(int expected, int next){// Spin-wait using CompareExchange for lock-free thread safetywhile (Interlocked.CompareExchange(ref _state, next, expected) != expected){// Potential back-off logic hereThread.Yield();}}}
Erklärung
1
while (Interlocked.CompareExchange(ref _state, next, expected) != expected)
Versucht, den Zustand nur dann zu aktualisieren, wenn der aktuelle Wert in einem einzigen atomaren Schritt 'expected' entspricht.
2
Thread.Yield();
Ermöglicht anderen Threads die Ausführung, wenn das atomare Update aufgrund von Konkurrenz fehlschlägt.