-
Apple에서 macOs와 ios운영체제를 위해 만든 기술
-
디스패치 큐를 사용하여 병렬 작업을 수행한다
- 직렬 큐
- FIFO 로 구성되어 있고, 뒤의 큐가 제거되기 전 앞의 큐는 반드시 수행 완료돼야 한다.
- 각 프로세스마다 직렬 큐가 하나씩 있어서 메인큐라고도 불린다.
- 직렬 큐에 추가 적으로 큐를 쌓을 수 있다.
- 순서를 요할 때 사용하기에 좋다.
- 병렬 큐
- 직렬 큐와 마찬가지로 FIFO이나 다수의 큐들을 사용하여 병렬적인 사용이 가능하다.
-
위의 디스패치 큐는 4가지 종류의 서비스 품질 클래스들이 있다.
- 사용자 대화형 클래스
- 빠른 응답이 중요하다
- 사용자와 많은 상호작용을 하기에 테스크는 아주 적은 양만 한다.
- 사용자 시작형 클래스
- 사용자가 처음으로 실행할 때 준비하는 테스크들을 처리하는 큐 클래스다.
- 예를 들어서는 특정 URL로 사이트에 첫 접속시가 있다.
- 유틸리티 클래스
- 속도가 그렇게 중요하지 않은 것들의 클래스이다.
- 데이터 가져오기 같은 작업이 이에 포함된다.
- 백그라운드 클래스
- 이 클래스에 속하는 테스크는 사용자 눈에 보이지 않으며, 시간에 민감하지 않다.
-
GCD block 설정 → 작업(Task) 단위
^{ printf("I am a block"); }
-
Swift를 사용하여 서비스 품질 클래스를 설정 후 태스크를 큐에 제출하는 과정
let queue = dispatch_get_global_queue -> 클래스 설정
(QOS_CLASS_USER_INITIATED, 0)
dispatch_async(queue, { printf("I am a block") } )