Swift - GCD(2)

Jenny·2021년 10월 28일
1

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 - 디스패치큐와 오퍼레이션큐의 이해

profile
"Jenny 있게 iOS 개발을 하며 대체 불가능한 인재가 되자"

0개의 댓글