GCD // Operation
직접적으로 스레드를 관리하지 않고 Queue를 활용해 작업을 분산 처리함
GCD , Operation을 사용해 iOS에서 알아서 스레드 숫자를 관리함
다른 스레드에서 작업들이 "비동기적으로 동작" 하도록 만듬
DispatchQueue.global().async { 작업의 한 단위 == task } //task는 동기적으로 작동함
GCD (Grand Central Dispatch = DispatchQueue)
간단한 일
함수를 사용하는 작업(메소드 위주)
Operation
복잡한 일
데이터와 기능을 캡슐화한 객체
취소
, 순서지정
, 일시중지(상태 추적)
<aside> 💡 Synchronous VS Asynchronous
</aside>
Async(비동기) 안 기다림
작업의 완료를 기다리지 않고 즉시 Return
메인 스레드에서 다른 스레드에 일을 넘기고 작업 완료까지 대기하지 않는다 → 다음 작업으로 바로 넘어감
Sync(동기) 기다림
작업을 시작하고 끝날때까지 기다린다
다른 스레드로 보내는 의미가 없다 → 동기적으로 코드를 작성해도 실질적으로 메인 스레드에서 작업을 진행한다
<aside> 💡 Serial VS Concurrent
</aside>
Serial (직렬 큐) - 분산처리 시킨 작업을**다른 한 개의 스레드에서
**
순서가 중요한 작업을 처리할때 사용
Concurrent (동시 큐) - 분산처리 시킨 작업을 다른 여러 개의 스레드에서
각각 독립적이지만 유사한 여러개 작업을 처리할 때 사용