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.