스레드를 사용할 때에 비해서, DispatchQueue가 얻을 수 있는 이점
- 스레드를 만들고 관리하는 것을 시스템이 하기 때문에 훨씬 간결하다. 시스템은 현재 시스템 상태와 자원에 따라 유동적으로 스레드 수를 조절할 수 있고, 종종 더 빠르게 작업을 시작할 수도 있다.
- Serial의 경우는, 작업의 수행순서가 보장되기 때문에 lock을 사용하지 않고도 동기화가 가능해진다. 덕분에 불필요한 커널 모드 진입을 최소화 할 수 있다.(물론 여러개의 SerialQueue가 같은 자원에 접근하게 하면 문제가 된다.)
- 스레드를 만들때 커널 영역과 유저 영역 메모리를 모두 확보해야하는 비용이 드는데, DispatchQueue는 이러한 비용이 들지 않는다.
- DispatchQueue를 통해 생성된 스레드는 클록되지 않고 계속해서 연산을 수행한다.
그 외에도 DispatchQueue가 가지는 특징
- DispatchQueue의 순차성은 한 Queue 단위에서만 적용된다.
- 아무리 Queue를 많이 만들어도, 동시에 수행되는 작업의 수는 시스템에 의해 결정된다.
- 시스템은 새로이 수행할 작업을 결정할 때, Queue의 우선순위를 고려한다.
- Queue에 작업이 들어갈 때, 이미 실행할 준비가 완료된 상태여야 한다.
'iOS > Swift' 카테고리의 다른 글
DispatchQueue.main.sync 사용 시 주의사항 (0) | 2021.09.05 |
---|---|
DispatchQueue의 의존성 (0) | 2021.09.05 |
비동기에서의 NSLock() 간단 비교 (0) | 2021.09.05 |
12.2.2. 영화관 정보 API (0) | 2021.09.02 |
12.3. 영화관 목록 화면 구현하기 (0) | 2021.09.02 |