Sobes.tech
Middle

Wat is Interlocked in C#?

sobes.tech AI

Antwoord van AI

Interlocked is een klasse in de namespace System.Threading die atomaire bewerkingen biedt voor variabelen die gedeeld kunnen worden door meerdere threads. Een atomaire bewerking is een bewerking die volledig wordt uitgevoerd of helemaal niet, zelfs bij gelijktijdige toegang vanuit verschillende threads.

De belangrijkste atomaire bewerkingen die door Interlocked worden geleverd, zijn:

  • Increment: Verhoogt atomair de waarde van een variabele van het type int of long.
  • Decrement: Verlaagt atomair de waarde van een variabele van het type int of long.
  • Add: Voegt atomair een waarde toe aan een variabele van het type int of long.
  • Exchange: Vervangt atomair de waarde van een variabele door een nieuwe en geeft de vorige waarde terug. Wordt ondersteund voor verschillende types, inclusief int, long, float, double en referentietypes.
  • CompareExchange: Vergelijkt atomair de waarde van een variabele met een gegeven waarde. Als ze gelijk zijn, vervangt het de waarde van de variabele door een nieuwe. Geeft de vorige waarde van de variabele terug. Wordt ondersteund voor verschillende types, inclusief int, long, float, double en referentietypes.

Het gebruik van Interlocked helpt problemen met data races te voorkomen, die kunnen optreden bij werken met gedeelde variabelen uit verschillende threads zonder locks. Dit maakt de code betrouwbaarder en efficiënter in scenario's waar alleen atomair toegang tot één variabele vereist is, omdat Interlocked meestal zonder kosten voor mutexen of locks werkt.

Voorbeeld van het gebruik van Interlocked.Increment:

// Variabele waar meerdere threads toegang toe hebben
private int _counter = 0;

public void Method1()
{
    // Veilige atomische verhoging
    Interlocked.Increment(ref _counter);
}

public void Method2()
{
    // Veilige atomische verhoging
    Interlocked.Increment(ref _counter);
}