Sobes.tech
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 lock so'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.