Sobes.tech
Junior — Middle

Кайсы учурларда Semaphore механизмин колдонуу туура болот?

sobes.tech AI

AIден жооп

Семафор (семафор) механизми белгилүү бир ресурска же критикалык бөлүмгө бир убакта кирүүчү жиптердин санын чектөө үчүн колдонулат.

Семафорду колдонуу сунушталат, эгер:

  • Бир убакта жүргүзүлүүчү операциялардын санын чектөө керек болсо, мисалы, байланыш пулуна же чектелген файлдарга кирүүдө.
  • Системанын жүктөмүн алдын алуу үчүн параллелизмди көзөмөлдөө керек болсо.
  • Бир нече жиптер ресурстун бошотулушун күтүшү керек болсо, синхрондоштуруу үчүн.

iOSто семафорлор көбүнчө асинхрон тапшырмаларды башкаруу үчүн колдонулат, мисалы, бир нече операциянын аяктоо эсебин күтүү же бир убакта аткарылуучу тапшырмалардын санын чектөө.

Swiftте DispatchSemaphore колдонуу мисалы:

let semaphore = DispatchSemaphore(value: 3) // максимум 3 жип бир убакта

func accessResource() {
    semaphore.wait() // эсептегичти төмөндөтөт, эгер 0 болсо, жип блоктолот
    // Ресурска иштөө
    print("Жип кирүү алды")
    sleep(1) // иштин симуляциясы
    semaphore.signal() // эсептегичти жогорулатат, орун бошотот
}

for _ in 1...10 {
    DispatchQueue.global().async {
        accessResource()
    }
}

Бул мисалда, эң көп дегенде 3 жип ресурска бир убакта иштей алат.