해당 포스팅은 iOS Concurrency(동시성) 프로그래밍, 동기 비동기 처리 그리고 GCD/Operation - 디스패치큐와 오퍼레이션큐의 이해 강의를 수강하고 개인적으로 정리한 내용을 기록한 것 입니다.
직렬(Serial)과 동시(Concurrent)
- 직렬(Serial): 한 개의 스레드를 활용해 작업을 순차적으로 수행하는 것
- 동시(Concurrent): 여러 개의 스레드를 활용해 작업을 동시에 수행하는 것. 몇 개의 스레드로 분산할 지는 시스템이 알아서 결정한다.
직렬 큐와 동시 큐
- 직렬 큐(Serial Queue): (보통 메인에서) 분산 처리 시킨 작업을 다른 한 개의 스레드에서 처리하는 큐
- 동시 큐(Concurrent Queue): (보통 메인에서) 분산 처리 시킨 작업을 다른 여러개의 스레드에서 처리하는 큐
직렬 큐의 경우, 순서가 중요한 작업을 처리할 때 사용하며,
동시 큐의 경우, 각자 독립적이지만 (중요도나 작업의 성격 등이) 유사한 여러 개의 작업을 처리할 때 사용한다.
비동기와 동시는 같은 의미인가?
비동기는 작업을 다른 스레드에서 하도록 시킨 후, 그 작업이 끝나길 기다리지 않고 다음 일을 진행하는 것이고,
동시는 여러 개의 스레드를 활용해 작업을 동시에 수행하는 것을 의미한다.
따라서 둘은 전혀 다른 개념이다!