직접 쓰레드를 관리하지 않고, "큐(Queue)"(대기열/대기행렬) 라는 개념을 이용해 작업을 분산처리 : 쓰레드를 생성하지 않고, 큐(Queue)만 만들어서 그 안에 작업을 넣으면 iOS가 알아서 쓰레드를 생성하여 분산처리한다.
GCD / Operation이 알아서 쓰레드 숫자를 관리한다. (직접 쓰레드를 생성하는 것은 하드웨어나 일의 부하(load)와 같은 시스템에 대한 지식 없이 사용하면, 오히려 앱이 느려질 수 있다.)
쉽게 다른 쓰레드에서 (오래 걸리는) 작업들이 "비동기적으로 동작"하도록 만들어준다.
1. 코드 예시
DispatchQueue.global().async {
//큐에 보낼거야 글로벌 큐에 비동기적으로
//여기 들어오는 작업을 글로벌 큐에 비동기적으로 보낸다는 뜻.
}
let queue = DispatchQueue.global()
//보낼 큐의 종류를 선언
queue.asnyc {
//(해당큐에) 비동기적으로 보낼거야
}
//작업의 단위 ===> "하나의 클로저" 안에 보내는 작업 자체가 묶이는 개념.
DispatchQueue.global().async {
print("Task 1 시작")
print("Task 1의 중간 작업 1")
print("Task 1의 중간 작업 2")
print("Task 1의 중간 작업 3")
print("Task 1의 중간 작업 4")
print("Task 1 종료")
// 하나의 작업이기때문에 순서적으로 작동한다.
}
참고 : https://inf.run/pQ7u