기어가더라도 제대로

1. GCD 와 Operation 본문

CS/동시성

1. GCD 와 Operation

Damagucci-juice 2022. 8. 31. 17:20

iOS 에서 제공하는 두가지 작업 대기열이다.

  • 직접적으로 쓰레드를 관리하지 않고, "큐(Queue)" (대기열/대기행렬)라는 개념을 이용해 작업을 분산처리
  • GCD / Operation 을 사용해 시스템에서 알아서 쓰레드 숫자를 관리함
  • 쓰레드 보다 더 높은 레벨/차원에서 일을 한다고 보면됨?
  • 오래걸리는 작업들이 비동기적으로 작업하도록 만들어준다.

‏‏‎ ‎

DispatchQueue

  • "큐에 보낸다" 라는 뜻
  • 클로저 안에 들어가는 코드는 작업(Task)의 한 단위 이다.
    • 하나의 테스크 안에선 순차적으로 작업
// 선언하지 않고 큐를 사용
DispatchQueue.global().async {
  // 큐에 보낼거야.글로벌큐에.비동기적으로
  // task here
}

// 선언하여 큐를 사용
let queue = DispatchQueue.global()
queue.async {
   // task here
}

‏‏‎ ‎

GCD 와 Operation 의 차이점

CGD 와 Operation image

  • operation 은 GCD를 기반으로 한 작업이다.
  • 취소 / 순서 지정 / 일시중지 (상태추적)
    • 등의 일을 GCD에선 못하지만 operation에선 할 수 있다.
  • 오퍼레이션은 클래스화 하여서 재사용성이 있다.

'CS > 동시성' 카테고리의 다른 글

5. GCD 사용시 주의해야할 사항  (0) 2022.09.26
4. 디스패치 큐의 종류  (0) 2022.09.26
3. 직렬과 동시  (0) 2022.08.31
2. 동기(Synchronous) VS Asynchronous(비동기)  (0) 2022.08.31
0. 동시성 프로그래밍의 필요성  (0) 2022.08.31
Comments