Sync vs Async / Serial vs Concurrency

leeyoung·2022년 8월 1일

GCD

목록 보기
1/1

Sync vs Async / Serial vs Concurrency

iOS Concurrency(동시성) 프로그래밍, 동기 비동기 처리 그리고 GCD/Operation - 디스패치큐와 오퍼레이션큐의 이해 강의 <섹션 0. GCD - 1.GCD/Operation에 앞서>3) Synchronous(동기) VS Asynchronous(비동기)4)Serial(직렬) VS Concurrency(동시) 내용을 정리한 것입니다.

3) Synchronous(동기) VS Asynchronous(비동기)

  1. 비동기(Asynchronous): 작업을 시작시키고 기다리지 않는다

    • DispatchQueue.global().async {
        
      }
      // 원래 작업이 진행되고 있는 main thread에서
      // 글로벌 디스패치 큐로 보낸 작업을 기다리지 않는다.
  2. 동기(Synchronous): 작업이 끝날 때 까지 기다린다.

    • DispatchQueue.global().sync {
        
      }
      // 원래 작업이 진행되고 있는 main thread에서
      // 글로벌 디스패치 큐로 보낸 작업이 끝날 때까지
      // 다른 작업이 진행되지 않도록 block하고 기다린다.
    • (동기로 다른 스레드로 보낸다 -> 이게 의미가 없어. -> 이런 경우 그냥 메인 스레드에서 실행된다고 함(os 자체의 판단인가))

4) Serial(직렬) VS Concurrency(동시)

  • Queue가 가진 특성
  • Serial Queue: 큐에 담긴 것을 한개의 thread로 전달(단 하나의 다른 thread로만 보낸다). 순서가 중요한 작업 처리
  • Concurrent Queue: 여러 thread에 걸쳐서 전달(분산 처리). 각자 독립적이지만 중요도나 작업 성격이 유사한 여러 작업을 처리

0개의 댓글