GCD 동시(Serial) 큐,직렬(Concurrent) 큐
직렬(Serial)큐 : 다른 한 개의 쓰레드에 작업을(Task)을 순차적으로 처리한다!! 라는 말입니다.
그림으로 보시면 대기열(Queue)에 있던 작업이 순차적으로 다른 쓰레드(Thread2)에 순차적으로 옮겨지는 게 보이시죠!! 이렇게 직렬 큐는 대기열(Queue)에서 다른 쓰레드로 옮겨지는 거로 생각하시면 됩니다!! (중요)
동시(Concurrent) 큐: 다른 여러개의 쓰레드에서 작업(Task)를 처리한다.
- 동시 큐 같은 경우 대기열(Queue)에 있던 작업들이 Thread2 뿐만이 아닌 여러 쓰레드에 작업이 옮겨지며 처리하는 것을 보실 수 있을 거예요!! 동시큐 역시 대기열(Queue)에 있던 작업이 쓰레드로 옮겨지는 것입니다 ^^
직렬(Serial) 큐 vs 동시(Cocurrent) 큐 차이
- 직렬(Serial) 큐 같은 경우 순서가 있습니다 순차적으로 작업을 옮겨지며 다른 메인 쓰레드가 아닌 다른 한 개의 쓰레드에서만 작업을 처리하지만 동시(Cocurrent) 큐 같은 경우 다른 여러 개의 쓰레드에서 작업을 처리하므로 쓰레드가 여러 개가 사용될 수 있습니다.
- 직렬(Serial) 큐 같은 경우 순서가 중요하기 때문에 순서가 중요한 작업을 처리할 때 사용하면 되겠죠??
직렬(Serial) Queue는 어느때 사용 되는가??
- Main Queue : Main Thread에서 실행되는 Serial(직렬) 큐입니다. Main thread인 만큼 당연히 UI Task 작업을 실행시킬 때 보통 사용한다고 하네요 ^^
동시(Concurrent) Queue의 사용 예
- 동시 큐는 유사한 여러 개의 작업을 처리 할 때 사용한다고 합니다 ^^
- 서버 호출(CollectionView,TableView)의 Cell Layout 구성 작업을 할 때 구현하시면 좋으실 것 같아요 ^^
비동기(Async)와 동시(Concurrent)의 차이점
- 비동기(Async)와 동시(Concurrent)에 대해 배우면서 여러 개의 쓰레드에 작업을 처리하는데 똑같은 게 아닌가?? 무엇이 다르다는 의문점을 가지게 되었지만 역시 비동기(Async)와 동시(Concurrent)는 다른 부분이 있습니다 ^^
- 차이점 : 시작점의 차이입니다 ^^ 동시는 대기열(Queue)에 있는 작업(Task)을 다른 여러 쓰레드로 보내 처리하는 것이지만 비동기 같은 경우 쓰레드에 있는 작업을 대기열로 보내진 후에 그 작업이 마치는 것의 관계없이 다음 작업을 다른 쓰레드에 처리한다는 것입니다. 즉 비동기(Async)는 (쓰레드에 대한 작업 요청) 동시(Concurrnet)는 대기열(Queue)에 대한 작업 요청입니다.
인프런 - iOS Concurrency(동시성) 프로그래밍, 동기 비동기 처리 그리고 GCD/Operation - 디스패치큐와 오퍼레이션큐의 이해