Synchronous(동기)
동시에 발생하는 -> 여기서 동시 발생은 작업이 동시 발생 X, '요청 - 응답' 이 동시 발생한다는 뜻
요청에 대한 응답이 동시에 발생야 한다. -> 내 작업이 끝나기 전까진 다른 작업을 수행하지 못한다.
장점
- 설계가 매우 간단하고 직관적임
단점
- 응답이 주어질 때까지 아무것도 못하고 대기
Asynchronous(비동기)
동시에 발생하지 않는
요청에 대한 응답이 동시에 발생하지 않는다. -> 내 작업이 끝나기 전에 다른 작업을 수행할 수 있다.
장점
- 응담이 주어질 때까지 기다리지 않고 다른 작업을 하므로 자원을 효율적으로 사용 가능
단점
- 동기보다 설계가 복잡
Serial
순차적인 * Sync와 Serial은 다른 개념
- Sync는 앞 작업과 뒷 작업의 연관성에는 상관이 없음, 단일 작업에 대한 특성을 지칭
- 앞 작업이 Sync라 해도, 뒷 작업은 Asnyc일 수도 있음
-> 이 앞 작업과 뒷 작업을 '순차적'으로 실행시킬지 말지 정하는게 Serial 과 Concurrent
- Queue에 들어온 작업들을 순차적으로 실행
- 단일 작업들을 순차적으로 하나씩 실행(Serial Queue는 한 번에 하나의 task만 실행시킬 수 있기 때문에)
우리가 사용하는 Main Queue가 Serial Queue이다.
Serial Queue는 주로 작업을 동기화할 때 사용
Concurrent
동시에 발생하는
- Async는 나는 내 요청에 대한 답을 기다리지 않겠다 -> 단일 작업에 대한 특성을 지칭
- 내 Queue에 들어온 작업들을 동시다발적으로 실행
- 한 번에 여러 개의 Task를 실행시킬 수 있다.
예제)
let concurrentQueue = DispatchQueue.init(label: "SodeulQueue", attributes: .concurrent)
concurrentQueue.sync { print("start") }
concurrentQueue.async { for _ in 0...5 { print("async") }}
concurrentQueue.sync { for _ in 0...5 { print("sync") } }
concurrentQueue.sync { print("end") }
작업 순서
'Language > Swift' 카테고리의 다른 글
iOS - Singleton Pattern (0) | 2022.11.01 |
---|---|
iOS - GCD(Grand Central Dispatch) (1) | 2022.11.01 |
iOS - 프로세스(Process) / 스레드(Thread) (0) | 2022.10.31 |
iOS - AppDelegate (0) | 2022.10.27 |
Swift 네트워킹 방법 (0) | 2022.07.11 |
Comment