[iOS] Swift Concurrency(1)

kcs05008·2022년 5월 21일
0

iOS

목록 보기
7/7
post-thumbnail

동시성(Concurrency) 프로그래밍이란

많은 수의 코어를 효율적으로 활동하는데 도움을 준다.
동일한 시간에 코어를 하나 이상 사용해서 처리를 빠르게 하고, 중요하지 않은 작업은 중요도가 낮은 스레드에서 실행시킨다.

GCD(Grand Central Dispatch)

  • 멀티코어와 멀티 프로세싱 환경에서 최적화된 프로그래밍을 할 수 있도록 지원해주는 동시성 프로그래밍 API

Dispatch Queue

  • 태스크들을 넣어서 관리하는 클래스
  • CPU 사용량이 많은 태스크들을 별도의 스레드에서 처리한 뒤 메인 스레드로 결과를 전달

Dispatch queue의 유형

  • Serial Dispatch Queue
    순차처리 방식
    한 번에 하나의 태스크를 순차적으로 실행
  • Concurrent Dispatch Queue
    병렬처리 방식
    순차적으로 진행하지 않고, 가능한 많은 작업을 한 번에 진행

GCD 단점

  • 복잡한 Concurrency는 GCD로 표현하기 어렵다.
  • 사용자의 실수로부터 사용자를 보호하기 어렵다.
  • race condition, thread explosion등이 일어날 수 있다.

Swift Concurrency

WWDC 2021에 소개된 swift로 만든 새로운 동시성 프로그래밍 API
asyncawait을 사용해서 비동기 태스크 종료 후 코드를 작성할 수 있어 callback hell을 없애고 가독성이 좋은 코드를 짤 수 있음

  • async
    함수가 asynchronous하다는 것을 나타내기 위해 사용
  • await
    possible suspension point를 나타내기 위해 사용

swift concurrency를 사용함으로써 얻는 이점

  • 가독성
  • 에러 핸들링 안정성
  • 동기화 처리
  • context switching 횟수 저하
  • 우선순위 역전 방지
profile
악으로 깡으로 버티기

0개의 댓글