Sobes.tech
Middle

Kas ir Interlocked C#?

sobes.tech AI

Atbilde no AI

Interlocked ir klases System.Threading telpā, kas nodrošina atomu operācijas koplietošanas mainīgajiem, kurus var izmantot vairāki pavedieni. Atomu operācija ir operācija, kas garantēti tiek pabeigta pilnībā vai vispār netiek veikta, pat ja to veic dažādi pavedieni.

Galvenās atomu operācijas, ko nodrošina Interlocked:

  • Increment: atomu veidā palielina int vai long tipa mainīgā vērtību.
  • Decrement: atomu veidā samazina int vai long tipa mainīgā vērtību.
  • Add: atomu veidā pievieno vērtību int vai long tipa mainīgajam.
  • Exchange: atomu veidā maina mainīgā vērtību uz jaunu un atgriež iepriekšējo vērtību. Atbalsta dažādus tipus, ieskaitot int, long, float, double un atsauces tipus.
  • CompareExchange: atomu veidā salīdzina mainīgā vērtību ar norādīto vērtību. Ja tās ir vienādas, maina mainīgā vērtību uz jaunu. Atgriež iepriekšējo vērtību. Atbalsta dažādus tipus, ieskaitot int, long, float, double un atsauces tipus.

Interlocked izmantošana ļauj izvairīties no datu sacensību problēmām (data races), kas var rasties, strādājot ar koplietotiem mainīgajiem no dažādiem pavedieniem bez bloķēšanas. Tas padara kodu drošāku un efektīvāku, jo Interlocked parasti darbojas bez mutexiem vai bloķēm.

Piemērs ar Interlocked.Increment izmantošanu:

// Mainīgais, pie kura var piekļūt vairāki pavedieni
private int _counter = 0;

public void Method1()
{
    // Droša atomu palielināšana `_counter`
    Interlocked.Increment(ref _counter);
}

public void Method2()
{
    // Droša atomu palielināšana `_counter`
    Interlocked.Increment(ref _counter);
}