Middle
Čo je Interlocked v C#?
sobes.tech AI
Odpoveď od AI
Interlocked je trieda v priestore mien System.Threading, ktorá poskytuje atómové operácie pre premenné, ktoré môžu byť zdieľané viacerými vláknami. Atómová operácia je taká, ktorá je garantovane vykonaná úplne alebo vôbec, aj pri konkurenčnom prístupe z rôznych vlákien.
Hlavné atómové operácie poskytované Interlocked sú:
Increment: atómovo zvyšuje hodnotu premennej typuintalebolong.Decrement: atómovo znižuje hodnotu premennej typuintalebolong.Add: atómovo pridáva hodnotu k premennej typuintalebolong.Exchange: atómovo nahrádza hodnotu premennej novou a vracia predchádzajúcu hodnotu. Podporované pre rôzne typy, vrátaneint,long,float,doublea referenčných typov.CompareExchange: atómovo porovná hodnotu premennej s danou hodnotou. Ak sú rovnaké, nahradí hodnotu premennej novou. Vráti predchádzajúcu hodnotu premennej. Podporované pre rôzne typy, vrátaneint,long,float,doublea referenčných typov.
Použitie Interlocked pomáha vyhnúť sa problémom s dátovými súťažami (data races), ktoré môžu nastať pri práci s spoločnými premennými z rôznych vlákien bez zámkov. To robí kód spoľahlivejším a efektívnejším v scenároch, kde je požadovaný len atómový prístup k jednej premennej, pretože Interlocked zvyčajne obchádza náklady na mutexy alebo zámky.
Príklad použitia Interlocked.Increment:
// Premenná, ku ktorej budú mať prístup viaceré vlákna
private int _counter = 0;
public void Method1()
{
// Bezpečné atómové zvýšenie
Interlocked.Increment(ref _counter);
}
public void Method2()
{
// Bezpečné atómové zvýšenie
Interlocked.Increment(ref _counter);
}