[iOS] 동시성 프로그래밍(5) - DispatchSemaphore
2023. 1. 4. 21:35
iOS/iOS
Semaphore동시성 프로그래밍에서는 여러 작업들이 공유 자원을 사용하기 때문에, 여러가지 문제가 발생한다. 이러한 문제들은 둘 이상의 작업들이 공유자원에 접근하면 문제가 생기는 코드 영역인 Critical Section에서 발생하는데, 공유자원에 접근하여 발생하는 문제 중 하나로 두 작업의 접근 순서에 따라 결과가 바뀌는 문제가 있다.for _ in 1...5 { let group = DispatchGroup() var someNumber = 10 DispatchQueue.global().async(group: group) { someNumber *= 10 } DispatchQueue.global().async(group: group) { ..
[iOS] 동시성 프로그래밍(4) - DispatchWorkItem
2023. 1. 4. 17:28
iOS/iOS
기존의 DispatchQueue에서의 작업은 다음과 같이 클로저 형태로 작성하였다. DispatchQueue.global().sync { task(1) task(2) } DispatchQueue.global().async { task(1) task(2) } 하지만, 같은 작업이 반복되는 경우 똑같은 코드를 작성해야 하는데, DipsatchWorkItem을 사용하면 작업들을 캡슐화하여 재사용성을 늘릴 수 있다. DispatchWorkItem DispatchWorkItem은 작업들을 캡슐화 할 수 있는데, 사용은 다음과 같다. let workItem = DispatchWorkItem { task(1) task(2) } DispatchQueue.global().async(execute: workItem) Di..