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:intyokilongturidagi o'zgaruvchining qiymatini atomik tarzda oshiradi.Decrement:intyokilongturidagi o'zgaruvchining qiymatini atomik tarzda kamaytiradi.Add:intyokilongturidagi 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, jumladanint,long,float,doubleva 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);
}