1. 왜 동시성 프로그래밍이 필요할까?
동시성 프로그래밍의 정의
작업(Task)을 어떻게 다른 스레드에서 동시에 일을 하게 할 수 있을까?
작업을 **대기행렬(== Queue)**에 보내기만 하면 된다. → OS에서 알아서 다른 스레드로 분산처리를 해준다.
iOS에서의 동시성 프로그래밍의 목표
작업(Task)을 Queue로 보내는 프로그래밍 방법만 공부하면 끝난다.
2. 간단한 GCD/Operation 소개
- iOS에서 대기 행렬에는 두가지가 있다.
- **GCD(DispatchQueue)**와 Operation(OperaionQueue)
- 스레드를 직접 관리하지 않고, 큐에 작업을 넣어주면 iOS에서 스레드를 알아서 관리해준다.
- GCD와 Operation을 통해 오래걸리는 작업들이 비동기적으로 다른 스레드에서 동작하도록 만들어준다.
Queue로 보내는 방법
DispatchQueue.global().async {
// Task 1 - 작업의 한 단위
}
DispatchQueue.global().async {
// Task 2 - 작업의 한 단위
}
GCD / Operation
- Operation은 GCD를 기반으로 만들어짐
- GCD에 여러가지 추가기능을 넣은 게 Operation