티스토리 뷰

iOS

[iOS] GCD (Grand Central Dispatch)

반해원 2025. 3. 12. 18:20

안녕하세요. 반해원입니다.

 

인프런에서 앨런 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

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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
글 보관함