티스토리 뷰
안녕하세요. 반해원입니다.
인프런에서 앨런 iOS Concurrency(동시성) - 디스패치큐와 오퍼레이션큐의 이해 를 들으면서 내용을 정리해볼 예정입니다.
물론 이해한 내용들 위주로~
용어가 한영 왔다갔다 하는데 대충 이해해주세요..
iOS 프로그래밍에는 크게 2가지의 대기행렬/대기열(큐, Queue)이 있습니다.
-> GCD / Operation (Dispatch Queue / Operation Queue)
메인 쓰레드에 몰린 작업(task)들을 큐에 넣어주기만 하면 iOS가 알아서 다른 쓰레드(thread)를 생성하고 분배까지 해줍니다.
즉, 큐는 쓰레드보다 더 높은 차원에서 일을 한다고 볼 수 있습니다.
GCD (Grand Central Dispatch)
어떻게 큐(Queue)로 보낼까?
코드 예시를 봅시다.
비동기 코드 짤 때 자주 쓰던 형식인데요.
DispatchQueue.global().async {
// task1
print("task1 start!")
print("task1 - 1")
print("task1 - 2")
print("task1 - 3")
print("task1 - 4")
print("task1 completed")
}
DispatchQueue.global().async {
// task2
}
DispatchQueue: Dispatch 는 "보내다" 라는 뜻의 영어 단어인데, 말 그대로 queue로 보낸다~ 라는 뜻 입니다.
global(): 어디로? global queue 에 (생성자)
async: 비동기적으로
-> 이어지는 코드블럭(클로저) 내부의 task를 global queue 에 비동기적으로 보낼 것이다.
위 코드의 주석에 썼듯이 클로저 내부의 task가 작업의 한 단위가 됩니다.
클로저 내부의 작업들은 순.차.적으로 실행됩니다.
(start ~ 1 ~ 2 ~ 3 ~ 4 ~ completed)
다른 Dispatch Queue 의 클로저 내부에 있는 task는 다른 작업이라고 보면 됩니다.
GCD vs Operation
둘을 비교해보자면 아래와 같이 정리할 수 있습니다.
아직 Operation에 대해서는 잘 모르니 이 정도만 해놓고
강의 듣고 직접 코드 써보고 나서 더 내용을 추가하겠습니다.
GCD | Operation |
Dispatch Queue | Operation Queue |
간단한 일 (클로저로 묶여지는 단위, 메소드/함수 위주) |
복잡한 일 (데이터/기능 캡슐화한 객체 -> 재사용성) |
- | GCD 기반 + a (취소/순서지정/일시중지 등) |
프로젝트의 효율성, 적합성에 따라 고려해서 사용 |
끝입니다.
강의는 이어서...
참고한 내용들!
inflearn 강의 https://www.inflearn.com/course/ios-concurrency-gcd-operation
'iOS' 카테고리의 다른 글
[iOS] CocoaPods pod init 오류 - uninitialized constant ActiveSupport::LoggerThreadSafeLevel::Logger (NameError) (0) | 2025.03.03 |
---|---|
[iOS] CocoaPods 설치 및 사용방법 (0) | 2024.05.14 |
[iOS] Firebase로 앱 푸시 구현하기 1 - Firebase Console 프로젝트 생성 (0) | 2024.05.12 |
[iOS] .gitignore 생성하기 + 생성해주는 사이트 (0) | 2024.04.01 |
[iOS] Apple 개발자 계정 등록 - Apple Developer Program 가입 (0) | 2024.03.31 |
- Total
- Today
- Yesterday
- Push
- Final
- markdown
- xcode
- github
- markdowneditor
- AutoLayout
- cocoapods
- 연동
- scenedelegate
- Firebase
- optional
- IOS
- AppDelegate
- 테스트폰
- Chrome
- 개발자도구
- typora
- Branch
- GIT
- ruby
- Swift
- 콘솔
- Constraints
- Operation
- gitignore
- GCD
- SPM
- dependencymanager
- AppleDeveloperProgram
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |