Sobes.tech
Junior — Middle

Dasturlash va oqimlarni sinxronlashtirish kontekstida semafor nima ekanligini tushuntirib bera olasizmi?

sobes.tech AI

AIdan javob

Semafor — bu umumiy resursga kirishni boshqarish uchun ishlatiladigan sinxronizatsiya mexanizmi.

U hisoblagichni o'z ichiga oladi, u bir vaqtning o'zida nechta oqim resursga kirishi mumkinligini ko'rsatadi. Agar oqim tanqidiy bo'limga kirishni istasa, u "semoforni" "yopishga" harakat qiladi:

  • Agar hisoblagich noldan katta bo'lsa, u birga kamaytiriladi va oqim ishlashda davom etadi.
  • Agar hisoblagich nolga teng bo'lsa, oqim bloklanadi va boshqa oqim semaforni bo'shatishini kutadi.

Oqim resurs bilan ishlashni tugatgach, semaforni bo'shatadi va hisoblagichni oshiradi, bu esa boshqa oqimlarga davom etishga imkon beradi.

Swift (iOS) da semafor foydalanish misoli:

let semaphore = DispatchSemaphore(value: 2) // bir vaqtning o'zida 2 ta oqimga ruxsat beriladi

DispatchQueue.global().async {
    semaphore.wait() // semaforni yopishga harakat qilmoqda
    print("Oqim ish boshladi")
    sleep(2) // ishni simulyatsiya qilish
    print("Oqim ishni tugatdi")
    semaphore.signal() // semaforni ochadi
}

Shu tarzda, semafor umumiy resurs bilan ishlayotgan oqimlar sonini nazorat qilishga yordam beradi, raqobat shartlarini oldini oladi va ishning to'g'ri bajarilishini ta'minlaydi.