yoogail105 / KkokkoSwift

꼬리에 꼬리를 무는 swift 개념 정리
28 stars 0 forks source link

# DispatchSemaphore #65

Open yoogail105 opened 2 years ago

yoogail105 commented 2 years ago

DispatchSemaphore

Semaphore

1. 동시 작업 개수 제한

let semaphore = DispatchSemaphore(value: 2)
for i in 1...3 {
  semaphore.wait() //semaphore 감소
  DispatchQueue.global().async() {
    //임계 구역(critical section)
    print("공유 자원 접근 시작 \(i)")
    sleep(3)
    print("공유 자원 접근 종료 \(i)")
    semaphore.signal() //semaphore 증가
  }
}

2. 두 스레드의 특정 이벤트 완료 상태 동기화

let semaphore = DispatchSemaphore(value: 0)
DispatchQueue.global(qos: .background).async {
 //task A
 semaphore.signal()
}

semaphore.wait()


🔖 출처