Sobes.tech
Junior — Middle

Ko'plab iplarli dasturlashda qanday blokirovka turlari mavjud va ular qanday ishlashini tushuntirib bera olasizmi?

sobes.tech AI

AIdan javob

Ko'p oqimli dasturlashda umumiy resurslarga kirishni sinxronlashtirishga yordam beradigan turli xil blokirovka turlari mavjud:

  • Mutex (Mutual Exclusion) — resursga eksklyuziv kirishni ta'minlaydi. Faqat bitta oqim hozirda mutexni olishi mumkin.
  • Rekursiv mutex — bir oqimga blokirovkani bir necha marta olish imkonini beradi, o'z-o'zini bloklamasdan.
  • O'qish-Yozish blokirovka (Read-Write Lock) — bir vaqtning o'zida bir nechta oqim resursni o'qishi mumkin, lekin yozish faqat eksklyuziv bo'lishi mumkin.
  • Semafor — bir vaqtning o'zida resursga kirish mumkin bo'lgan oqimlar sonini cheklaydi.
  • Spinlock (faollik kutish) — oqim blokirovkani mavjudligini tsikl ichida tekshiradi, kutish holatiga o'tmay.

Swiftda mutexdan foydalanish misoli:

let lock = NSLock()

func criticalSection() {
    lock.lock()
    // Kritik bo'lim
    lock.unlock()
}

Blokirovka turini tanlash vazifa va ishlash va xavfsizlik talablariga bog'liq.