본문 바로가기

Codes Travel/iOS Boost Course #2019

Grand Central Dispatch

안녕하세요 :)

iOS 개발자 리치(rich_iosdev)입니다.


공유해드릴 내용은 Grand Central Dispatch 입니다.

 

기본적으로 스레드 풀 관리를 프로그래머가 아닌 운영체제가 직접 관리하기 때문에

프로그래머가 직접 비동기적 작업을 위해서 GCD를 활용할 수 있습니다.

 

Dispatch Queue에 필요한 작업을 추가해주면 작업에 맞는 스레드를 생성해서 작업을 실행하고

작업이 종료되면 스레드를 자동으로 제거합니다.

	DispatchQueue.main.async {
		// 실행시킬 작업 구현
      }

 

위 샘플코드는 개인적으로 가장 많이 활용하고 있는 GCD 코드입니다.

주로 UI에 바로 원하는 변화를 주고 싶을 때? 메인스레드로 비동기 작업 코드를 넘겨서 실행시킵니다.

부스트코스 이미지 참고

 

가장 중요한 개념이라고 볼 수 있는 Serial과 Concurrent에 대해서도 정리를 해봤습니다

...더보기

1. Serial Dispatch Queue는 한 번에 하나의 작업만을 실행하며,

해당 작업이 대기열에서 제외되고 새로운 작업이 시작되기 전까지 기다립니다.

 

2. Concurrent Dispatch Queue는 이미 시작된 작업이 완료될 때까지 기다리지 않고 가능한 많은 작업을 진행합니다

GCD가 아닌 Operation Queue도 가끔씩 활용을 하는데요. CGD와는 조금 다른 점들이 있었습니다.

 

GCD와 연산 대기열 (Operation Queue)

  • 차이점

    • Operation Queue에서는 동시에 실행할 수 있는 연산(Operation)의 최대 수를 지정할 수 있습니다.
    • Operation Queue에서는 KVO(Key Value Observing)을 사용할 수 있는 많은 프로퍼티들이 있습니다.
    • Operation Queue에서는 연산(Operation)을 일시 중지, 다시 시작 및 취소를 할 수 있습니다.

언제 사용해야 할까요?

  • Operation Queue : 비동기적으로 실행되어야 하는 작업을 객체 지향적인 방법으로 사용하는 데 적합합니다. KVO(key Value Observing)를 사용해 작업 진행 상황을 감시하는 방법이 필요할 때도 적합합니다.
  • GCD : 작업이 복잡하지 않고 간단하게 처리하거나 특정 유형의 시스템 이벤트를 비동기적으로 처리할 때 적합합니다. 예를 들면 타이머, 프로세스 등의 관련 이벤트입니다.

연산 대기열 Operation Queue에 관한 포스팅을 다시 정리해서 하도록 하겠습니다.

 

잘못된 부분이 있다면 꼭 댓글 부탁드립니다!

확인해서 수정하도록 할게요!!

 

끝까지 읽어주셔서 정말 감사합니다 :)

 

부스트코스 iOS 프로그래밍

1) Grand Central Dispatch란?

edwith.org/boostcourse-ios/lecture/16916/

 

[LECTURE] 1) Grand Central Dispatch란? : edwith

Grand Central Dispatch란? 멀티코어와 멀티 프로세싱 환경에서 최적화된 프로그래밍을 할 수 있도록 애플이 개발한 GCD기술에 대해 알아봅니다. 학습 목표 1. Gr... - 부스트코스

www.edwith.org