Sobes.tech
Middle

C# da Interlocked nima?

sobes.tech AI

AIdan javob

Interlocked System.Threading nom space ichida joylashgan va bir nechta oqimlar bilan umumiy foydalaniladigan o'zgaruvchilar uchun atomik operatsiyalarni ta'minlaydigan sinf. Atomik operatsiya - bu to'liq bajariladigan yoki umuman bajarilmaydigan operatsiya, hatto turli oqimlardan keladigan raqobatli kirishlar bo'lsa ham.

Interlocked tomonidan taqdim etilgan asosiy atomik operatsiyalar:

  • Increment: int yoki long turidagi o'zgaruvchining qiymatini atomik tarzda oshiradi.
  • Decrement: int yoki long turidagi o'zgaruvchining qiymatini atomik tarzda kamaytiradi.
  • Add: int yoki long turidagi o'zgaruvchiga atomik tarzda qiymat qo'shadi.
  • Exchange: o'zgaruvchining qiymatini atomik tarzda yangi bilan almashtiradi va avvalgi qiymatni qaytaradi. Turli turlar uchun qo'llab-quvvatlanadi, jumladan int, long, float, double va referens turlar.
  • CompareExchange: o'zgaruvchining qiymatini berilgan qiymat bilan atomik tarzda solishtiradi. Agar ular teng bo'lsa, o'zgaruvchining qiymatini yangi bilan almashtiradi. Avvalgi qiymatni qaytaradi. Turli turlar uchun qo'llab-quvvatlanadi.

Interlocked dan foydalanish ma'lumotlar raqobat muammolarini (data races) oldini olishga yordam beradi, ular turli oqimlardan umumiy o'zgaruvchilar bilan ishlashda yuzaga kelishi mumkin. Bu kodni yanada ishonchli va samarali qiladi, chunki Interlocked odatda mutexlar yoki blokirovkalar bilan bog'liq xarajatlarni oldini oladi.

Interlocked.Increment dan foydalanish misoli:

// Bir nechta oqimlar murojaat qiladigan o'zgaruvchi
private int _counter = 0;

public void Method1()
{
    // Xavfsiz atomik oshirish
    Interlocked.Increment(ref _counter);
}

public void Method2()
{
    // Xavfsiz atomik oshirish
    Interlocked.Increment(ref _counter);
}