그렇다면 동시성 프로그래밍이 필요한 이유는 무엇일까?
예를 들어 테이블뷰에 다운로드 받은 이미지들을 보여주어야 할 때
하나를 다운 받고 그 다음 것을 다운 받고 끝나면 또 다음 것을 받고..
이런식으로 이미지를 받아와 테이블뷰에 보여주도록 처리 한다면, 한참 시간이 지나야만 모든 데이터들을 테이블뷰에서 볼 수 있게 된다.
바로 이럴 때!
처리해야하는 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
'iOS > iOS' 카테고리의 다른 글
동시성 프로그래밍 (4) - GCD의 종류와 특성 (0) | 2024.08.12 |
---|---|
동시성 프로그래밍 (3) - GCD/Operation에 앞서 (0) | 2024.08.09 |
동시성 프로그래밍 (1) - GCD/Operation에 앞서 (0) | 2024.07.16 |
네이버 로그인 연동 - 3 / 3 (0) | 2024.04.08 |
네이버 로그인 연동 - 2 / 3 (0) | 2024.04.08 |
댓글