참고 사이트 링크

 

스레드를 사용할 때에 비해서, DispatchQueue가 얻을 수 있는 이점

  1. 스레드를 만들고 관리하는 것을 시스템이 하기 때문에 훨씬 간결하다. 시스템은 현재 시스템 상태와 자원에 따라 유동적으로 스레드 수를 조절할 수 있고, 종종 더 빠르게 작업을 시작할 수도 있다.
  2. Serial의 경우는, 작업의 수행순서가 보장되기 때문에 lock을 사용하지 않고도 동기화가 가능해진다. 덕분에 불필요한 커널 모드 진입을 최소화 할 수 있다.(물론 여러개의 SerialQueue가 같은 자원에 접근하게 하면 문제가 된다.)
  3. 스레드를 만들때 커널 영역과 유저 영역 메모리를 모두 확보해야하는 비용이 드는데, DispatchQueue는 이러한 비용이 들지 않는다.
  4. DispatchQueue를 통해 생성된 스레드는 클록되지 않고 계속해서 연산을 수행한다.

그 외에도 DispatchQueue가 가지는 특징

  1. DispatchQueue의 순차성은 한 Queue 단위에서만 적용된다.
  2. 아무리 Queue를 많이 만들어도, 동시에 수행되는 작업의 수는 시스템에 의해 결정된다.
  3. 시스템은 새로이 수행할 작업을 결정할 때, Queue의 우선순위를 고려한다.
  4. 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

+ Recent posts