Junior — Middle
Semafor nima va u qanday qilib jarayonlarni sinxronlashtirish uchun ishlatilishini tushuntirib berolasizmi?
sobes.tech AI
AIdan javob
Semafor — bu ko‘p iptida yoki ko‘p jarayonli muhitda umumiy resursga kirishni boshqarish uchun ishlatiladigan sinxronizatsiya mexanizmi. U hisoblagichni o‘z ichiga oladi, bu hisoblagich bir vaqtning o‘zida resursga kirishi mumkin bo‘lgan ip yoki jarayonlar sonini ko‘rsatadi.
Ishlash prinsipi:
- Dastlab, semafor hisoblagichi mavjud resurslar soniga o‘rnatiladi.
- Bir ip kirishni istaganda, u
wait(yokiacquire) operatsiyasini chaqiradi, bu hisoblagichni kamaytiradi. - Agar hisoblagich noldan kichik bo‘lsa, ip bloklanadi va resurs bo‘shatilishini kutadi.
- Ip resursni bo‘shatganda, u
signal(yokirelease) chaqiradi, bu hisoblagichni oshiradi va kutayotgan iplarni ochadi.
iOSda, semaforlar bilan ishlash uchun ko‘pincha GCD ning DispatchSemaphore sinfi ishlatiladi:
let semaphore = DispatchSemaphore(value: 1) // 1, resurs bir ip uchun mavjudligini bildiradi
// Iptda:
semaphore.wait() // resurs mavjud bo‘lishini kutadi
// Resurs bilan ishlash
semaphore.signal() // resursni bo‘shatadi
Shu tarzda, semaforlar raqobat shartlarini oldini olishga yordam beradi va umumiy resurslarga to‘g‘ri kirishni ta’minlaydi.