1. DispatchGroup과 DispatchQueue 만들기 let dispatchGroup = DispatchGroup() let queue = DispatchQueue(label: "queue", qos: .default, attributes: .concurrent) dispatchGroup은 한 단위로 모니터하는 작업 그룹입니다. dispatchQueue는 실행 작업을 계획합니다. 2. 첫 번째 실행되는 API func getReviewList() { showIndicator() NetworkService.getData(type: .getReviews, headers: nil, parameters: nil) { [weak self] (result: Result) in switch result {..
SerialQueue 순차 실행 작업을 계획합니다. DispatchQueue의 attributes를 비워두면 serial이 됩니다. let serialQueue = DispatchQueue(label: "serialQueue") func serialQueueA() { serialQueue.async { print(#function, Thread.current) for i in 1...10 { print("❤️", i) } } } func serialQueueB() { serialQueue.async { print(#function, Thread.current) for i in 1...10 { print("💚", i) } } } serialQueueA() serialQueueB() serialQueue는 ..
DispatchQueue 앱의 메인스레드나 백그라운드 스레드에서 순차적serially이거나 동시concurrently에 작업 실행을 관리하는 객체입니다. class DispatchQueue : DispatchObject DispatchQueue Overview 디스패치 큐는 블록객체 형식으로 작업을 제출하는 FIFO 대기열입니다. 디스패치 큐는 작업을 serially또는 concurrently 실행합니다. 디스패치 큐에 제출된 작업은 시스템에서 관리하는 스레드 풀에서 실행됩니다. 앱의 매인 스레드를 나타내는 디스패치 큐를 제외하고 시스템은 어떤 스레드를 사용하여 작업을 실행할지 보장하지 않습니다. 작업 항목(Work Item)을 동기synchronously, 비동기asynchronously로 계획할 수 ..