Sobes.tech
Junior — Middle

Ko'proq tushuntira olasizmi, ko'p ipli dasturlashda semafor qanday ishlash prinsipi?

sobes.tech AI

AIdan javob

Semafor — bu ko‘p ipchi bilan ishlashda sinxronizatsiya mexanizmi bo‘lib, umumiy resursga kirishni nazorat qiladi. U hisoblagichni o‘z ichiga oladi va bu hisoblagich, bir vaqtning o‘zida qancha ipchi resursga kirishi mumkinligini ko‘rsatadi.

Ishlash prinsipi:

  • Dastlab, semafor hisoblagichi mavjud resurslar soniga teng qilib o‘rnatiladi.
  • Agar ipchi kirishni istasa, u "wait" (yoki "acquire") operatsiyasini chaqiradi, bu hisoblagichni 1 ga kamaytiradi.
  • Agar hisoblagich manfiy bo‘lsa, ipchi bloklanadi va boshqa ipchi resursni bo‘shatishini kutadi.
  • Ipchi resursni bo‘shatganda, u "signal" (yoki "release") operatsiyasini chaqiradi, bu hisoblagichni 1 ga oshiradi va kutayotgan ipchilarni ochadi.

Swiftda DispatchSemaphore bilan misol:

let semaphore = DispatchSemaphore(value: 2) // bir vaqtning o‘zida 2 ipchi ishlashiga ruxsat beradi

DispatchQueue.global().async {
    semaphore.wait() // kirishni urinib ko‘rish
    print("Ipchi ish boshladi")
    sleep(2) // ishni simulyatsiya qilish
    print("Ipchi ishni tugatdi")
    semaphore.signal() // resursni bo‘shatish
}

Shu tarzda, semafor umumiy resurs bilan ishlayotgan ipchilar sonini cheklashga yordam beradi, raqobat sharoitlarini oldini oladi va ma’lumotlarning yaxlitligini ta’minlaydi.