아래와 이어지는 게시글입니다
비동기 프로그래밍 방식에 대해 알아보자
아래 글들을 참고했습니다
Grand Central Dispatch / Dispatch / Concurrency Programming Guide /
차근차근 시작하는 GCD 1~4
들어가며
처음에는 Operation Queue부터 쓰려고 했는데,
공부하다보니 GCD를 먼저 적고 합쳐서 올리는 게 나을 것 같아서 방향을 바꾸었습니다 !
Review
우선 동시성 프로그래밍을 복습해 보겠습니다...
동시성 프로그래밍이란?
"메인 스레드에 몰려 있는 작업들을 다른 스레드에서도 동시에 작업하도록 하는 것"
즉 메인 스레드가 처리해야 할 것들을 다른 스레드에 나눠 주어, 적절하게 일을 분배시켜 동작하도록 하는 것을 말합니다.
여기서 작업을 보내는 곳을 Queue라고 합니다.
큐에 작업을 넣으면 → 운영체제(OS)가 알아서 다른 스레드로 분산 처리해 줍니다.
(OS는 컴퓨터 내의 자원들을 관리하는 역할을 맡고 있으니까요!)
이제 GCD로 넘어가보도록 하겠습니다...
GCD
Grand Central Dispatch
이름부터 어렵네요...
1. GCD란 무엇인가?
- 멀티 코어와 멀티 프로세싱 환경에서 최적화된 프로그래밍을 할 수 있도록 애플이 개발한 기술을 말합니다.
- 스레드들의 관리를 OS가 직접 해주기 때문에, 프로그래머가 task를 손쉽게 비동기적인 방법으로 다룰 수 있도록 해줍니다.
- GCD에서 사용하는 Queue를 Dispatch Queue라고 합니다.
- Dispatch Queue에 작업을 추가하면
→ GCD는 작업에 맞는 스레드를 자동으로 생성 & 실행시키고 끝나면 스레드를 제거합니다.
정리해보겠습니다.
- 프로그래머가 task를 생성하고, Dispatch Queue에 추가
- GCD는 작업에 맞게 스레드를 자동으로 생성, 실행 → 작업이 종료된 후 해당 스레드를 제거
이해가 되셨나요?
이 게시글도 좋으니 혹여 어려우신 경우 참고하시면 되겠습니다 ...
2. 다시 Dispatch Queue로 돌아가겠습니다!
- Dispatch Queue는 큐이기 때문에, 선입선출(First In, First Out)이라는 특징을 가집니다.
- 종류에는 Serial Dispatch Queue, Concurrent Dispatch Queue가 있습니다.
- 이름에 걸맞게 Serial은 연속적으로(앞의 작업이 끝날 때까지 기다림) 실행되고,
- Concurrent는 동시에(안 기다림) 실행됩니다. (이전 게시글의 Concurrency Programming 방식이 떠오르네요 ...)
Operation Queue는 Concurrent Dispatch Queue와 비슷합니다 !
하지만 그 외의 요인들도 고려하기 때문에 조금 더 복잡한 개념으로 보면 될 것 같습니다.
- 그 외의 요인들: 동시에 가능한 연산의 최대수 지정 / 연산 일시적으로 중지, 취소 / KVO(key-value-observing) 등
'개발 > iOS' 카테고리의 다른 글
[iOS] UITableViewCell에 유동적인 행 높이 지정하기 (동적으로 높이 조정하기) (0) | 2022.02.12 |
---|---|
[iOS/Swift] Closure에 대해 알아보자 (2) | 2022.02.08 |
[iOS] Xcode의 시뮬레이터가 매우 느리게 동작할 때 해결법 (1) | 2022.01.30 |
스토리보드 없이 ViewController 불러오기 (0) | 2021.12.26 |
스크롤 안먹힐때 (0) | 2021.11.25 |
댓글