해당 포스팅은 iOS Concurrency(동시성) 프로그래밍, 동기 비동기 처리 그리고 GCD/Operation - 디스패치큐와 오퍼레이션큐의 이해 강의를 수강하고 개인적으로 정리한 내용을 기록한 것 입니다.
오퍼레이션 큐
- 오퍼레이션을 담아서 사용할 수 있는 대기열
- 내부적으로 GCD를 활용해 구현되어 있다.
특징
- 몇 개의 스레드를 사용할 것인지 구체적인 설정 가능하다.
maxConcurrentOperationCount = 1 // serial
maxConccurrentOperationCount = 2 // 두 개의 스레드 사용
- QoS의 구체적인 설정이 가능하다. (디폴트는 background)
- 오퍼레이션 자체의 품질을 설정하면 큐의 품질이 승격될 수 있다.
- 다만 기반이 되는(underlying) 디스패치 큐까지 설정이 가능하므로 underlyung 큐의 품질이 가장 우선적으로 적용된다.
-
오퍼레이션 추가 방법: 클로저, 오퍼레이션, 오퍼레이션 배열
-
오퍼레이션이 한 번 실행되거나 취소되면 오퍼레이션 큐를 떠난다.
-
동기적으로 기다리는 메서드 존재
waitUntilAllOperationsAreFinished()
- 일시 중지, 재개 기능
isSuspended
let someQueue = OperationQueue()
someQueue.addOperation(oneOperation)
someQueue.addOperations([], waitUntilFinished: true)
큐의 종류 정리
이미지 참고: https://www.inflearn.com/course/iOS-Concurrency-GCD-Operation