이 포스트는 인프런 Allen님의
iOS Concurrency(동시성) 프로그래밍, 동기 비동기 처리 그리고 GCD/Operation - 디스패치큐와 오퍼레이션큐의 이해
강의를 정리한 것입니다.
iOS Concurrency(동시성) 프로그래밍, 동기 비동기 처리 그리고 GCD/Operation - 디스패치큐와 오퍼레이션
동시성(Concurrency)프로그래밍 - iOS프로그래밍에서 필요한 동기, 비동기의 개념 및 그를 확장한 GCD 및 Operation에 관한 모든 내용을 다룹니다., - 강의 소개 | 인프런...
직렬(Serial)과 동시(Concurrent)는 큐의 특성에 관한 이야기이다.
아래와 같은 그림처럼 작업이 큐에 담겨져 있다고 할때
Serail이란 단 하나의 다른 스레드로만 보내는 특성을 가지는 대기열이다.
큐에서 작업을 오로지 하나의 스레드로만 보내주는 것을 볼 수 있다.
Concurrent 큐는 여러개의 쓰레드로 분산처리하는 특성이다.
몇개의 쓰레드로 분산할지는 시스템이 알아서 결정한다.
정리하면 다음과 같다.
직렬(Serial)큐: 분산처리 시킨 작업을 다른 하나의 쓰레드에서 처리하는 큐
동시(Concurrent)큐: 분산처리 시킨 작업을 다른 여러개의 쓰레드에서 처리하는 큐
직렬큐는 순서가 중요한 작업을 처리할 때 사용하며,
동시 큐는 각자 독립적이지만 유사한 여러개의 작업을 처리할 때 사용한다.
그렇다면 이전에 공부한 비동기(Async)와 동시(Concurrent)가 같은 말일까?
작업을 보내는 시작점에서 기다릴지 말지를 다루는 것이 비동기(Async)의 개념이고,
동시/직렬의 개념은 대기열(Queue)로 보내진 작업이 여러개의 스레드로 갈 것인지
하나의 스레드로 갈것인지를 다루는 것이다.
즉 두개는 다른 개념이다.
'iOS > 동시성 프로그래밍' 카테고리의 다른 글
디스패치 큐(GCD) 사용시 주의해야 할 점 (0) | 2022.04.06 |
---|---|
디스패치 큐(Dispatch Queue)의 종류와 특성 (0) | 2022.03.31 |
GCD와 Operation, 동기와 비동기 (0) | 2022.03.30 |
동시성 프로그래밍이 왜 필요할까? (0) | 2022.03.27 |