본문 바로가기
iOS/iOS

동시성 프로그래밍 (2) - GCD/Operation에 앞서

by 패쓰킴 2024. 7. 24.
728x90

그렇다면 동시성 프로그래밍이 필요한 이유는 무엇일까?

예를 들어 테이블뷰에 다운로드 받은 이미지들을 보여주어야 할 때

하나를 다운 받고 그 다음 것을 다운 받고 끝나면 또 다음 것을 받고..

이런식으로 이미지를 받아와 테이블뷰에 보여주도록 처리 한다면, 한참 시간이 지나야만 모든 데이터들을 테이블뷰에서 볼 수 있게 된다.

 

바로 이럴 때!

처리해야하는 task들을 스레드를 사용하여 빠르게 처리하기 위함이다.

이미지들을 동시 다발적으로 다운로드 작업을 처리 하도록 한다면 훨씬 빠르게 테이블 뷰를 완성 시킬 수 있을 것이다.

 

task를 스레드로 분산시키는 방법은

task를 queue(대기행렬)에 보내 놓기만 하면된다.

이렇게 하면 iOS는 알아서 여러 스레드로 분산시켜 동시에 일을 처리 할 수 있게 해준다.

 

대기열로 작업을 어떤식으로 보내는지 살펴보면

하나의 GCD 안에 보내는 작업 자체가 하나의 task로 묶이는 개념으로

Dispatchqueue.global().async {
  task1()
  task2()
  task3()
}

task1,2,3 이 하나의 작업으로 묶이는 것.

따라서 Dispatchqueue 클로저 안에 있는 작업들이 순차적으로 처리된다.

 

GCD / Operation

GCD(DispatchQueue)

-간단한 비동기 작업을 처리할 때 사용

-작업을 클로저 형태로 정의하고 큐에 추가

Operation

-복잡한 작업을 객체로 정의하여 사용

-비동기 작업을 캡슐화

- 객체로 정의하여 사용하기 때문에 작업의 취소, 일시정지, 재개 할 수 있어 작업 흐름을 구현하기 좋다.

 

 

 

iOS Concurrency(동시성) 프로그래밍, 동기 비동기 처리 그리고 GCD/Operation - 디스패치큐와 오퍼레이션

앨런(Allen) | 동시성(Concurrency)프로그래밍 - iOS프로그래밍에서 필요한 동기, 비동기의 개념 및 그를 확장한 GCD 및 Operation에 관한 모든 내용을 다룹니다., ✍️ 강의 제작 동기 '왜 동기vs비동기 개

www.inflearn.com

 

728x90

댓글