Junior — Middle
Tizimlar bir nechta oqimlar bir vaqtning o'zida umumiy o'zgaruvchi yoki holatga murojaat qilganda qanday boshqaradi?
sobes.tech AI
AIdan javob
Bir nechta oqim bir vaqtning o'zida umumiy o'zgaruvchi yoki holatga murojaat qilganda, raqobat shartnomasining (race condition) muammosi yuzaga keladi. Noto'g'ri ma'lumotlarni oldini olish va to'g'rilikni ta'minlash uchun sinxronizatsiya mexanizmlari qo'llaniladi:
- Bloklar (lock, mutex) — bir oqim resursni eksklyuziv tarzda egallaydi, boshqalar kutadi.
- Monitorlar (Monitor.Enter/Exit C# da) — yanada moslashuvchan bloklash mexanizmi.
- C# da
lockso'z kalit so'zi — monitorlar uchun soddalashtirilgan sintaksis. - Atomik operatsiyalar (Interlocked) — to'liq bloklashsiz oddiy operatsiyalar uchun.
- Concurrent to'plamlar — oqimlararo xavfsiz ma'lumot tuzilmalari.
C# da lock bilan misol:
private readonly object _sync = new object();
private int _counter = 0;
public void Increment()
{
lock(_sync)
{
_counter++;
}
}
Bu yondashuv faqat bitta oqim o'zgaruvchini o'zgartirishini ta'minlaydi.