iOS 개발/Swift

[Swift 3] DispatchSemaphore 사용하기

beankhan 2017. 6. 11. 22:13


출처

http://seorenn.blogspot.kr/2015/12/swift-gcd-dispatch-semaphore.html




DispatchSemaphore 를 사용하는 이유

serial dispatch queue 또는 dispatch_barrier_async 함수보다
작은 단위를 가진 소스코드의 작은 부분에 대한 동시성 제어가 필요한 경우 사용한다.




DispatchSemaphore 사용하기

DispatchSemaphore 의 init 시 사용되는 value 는 자원 개수를 뜻한다.


semaphore.wait() 는 value 값을 줄이고,

semaphore.signal() 은 value 값을 증가시킨다.


value 값이 음수가 되면 해당 스레드는 동작을 멈추고 자원을 얻기위해 기다린다.




.distantFuture 는 forever 와 동일한 시간이라고 보면된다.