고도고도
🍎🍏
고도고도
전체 방문자
13,424
오늘
31
어제
64
  • 분류 전체보기 (170)
    • 🔨 프로젝트 (0)
      • TP 1 (0)
      • WhiteHCCTV (0)
      • FootPrint (0)
    • 💻 개발 (61)
      • iOS (28)
      • Android (6)
      • Kotlin (4)
      • Flutter (9)
      • Node.js (5)
      • Architecture (1)
      • 오늘의 삽질 (7)
      • 에러와의 동침 (1)
    • ✏️ 알고리즘 (6)
      • Graph (6)
      • String (0)
      • Sort (0)
    • ✍️ 코테 준비 (44)
      • Math (1)
      • Implementation (3)
      • String (3)
      • Brute Force (5)
      • Back Tracking (7)
      • Greedy (0)
      • Dynamic Programming (13)
      • Binary Search (1)
      • DFS, BFS (5)
      • Shortest Path (2)
      • Two Pointer (4)
      • MST (0)
    • 📚 CS (6)
      • Operating System (6)
    • ⛹️ 라이프 (53)
      • 2020 겨울방학 모칵코(팀) (13)
      • 2020 겨울방학 모각코(개인) (13)
      • 2021 여름방학 모칵코(팀) (8)
      • 2021 여름방학 모각코(개인) (7)
      • 코딩 테스트 (1)
      • 회고 (10)

블로그 메뉴

  • 홈
  • 깃허브
  • 링크드인

공지사항

인기 글

  • [NCSOFT] 2022 엔씨소프트 썸머 인턴 후기 - 1⋯
    2022.08.10
    [NCSOFT] 2022 엔씨소프트 썸머 인턴 후기 - 1⋯
  • [Flutter] SingleChildScrollView,⋯
    2021.08.18
    [Flutter] SingleChildScrollView,⋯
  • [iOS / SwiftUI] MapKit, 실시간으로 도로⋯
    2022.12.20
    [iOS / SwiftUI] MapKit, 실시간으로 도로⋯
  • [Android] 백그라운드에서 소켓 통신으로 이벤트 수신⋯
    2022.06.08
    [Android] 백그라운드에서 소켓 통신으로 이벤트 수신⋯
  • [iOS / SwiftUI] OnAppear, OnDisa⋯
    2022.12.01
    [iOS / SwiftUI] OnAppear, OnDisa⋯

최근 댓글

  • https://developer.apple.com/docu⋯
    고도고도
  • 게시글 잘 보았습니다. 혹시 주소에서 구를 가지고 오시는⋯
    나그네
  • 혹시 댓글이 안보이는데 .. y2e010924@naver.⋯
    eun
  • 글 솜씨가 뛰어나시네요! 좋은 글 잘 보고 갑니다 다음에도⋯
    alpha-traveler
  • NC......가슴이...웅장해집니다.......🤯
    이상한핑구 🐧

최근 글

  • [Architecture] MVVM + Clean Arch⋯
    2023.01.07
    [Architecture] MVVM + Clean Arch⋯
  • [iOS / SwiftUI] MapKit, 실시간으로 도로⋯
    2022.12.20
    [iOS / SwiftUI] MapKit, 실시간으로 도로⋯
  • [iOS / SwiftUI] OnAppear, OnDisa⋯
    2022.12.01
    [iOS / SwiftUI] OnAppear, OnDisa⋯
  • [에러와의 동침] 22년 11월 4주차
    2022.11.28
    [에러와의 동침] 22년 11월 4주차
  • [iOS / SwiftUI] 스크롤, 무한으로 즐겨요~ (⋯
    2022.11.28
    [iOS / SwiftUI] 스크롤, 무한으로 즐겨요~ (⋯

티스토리

hELLO · Designed By 정상우.
고도고도

🍎🍏

[TIL] 22.03.23
💻 개발/iOS

[TIL] 22.03.23

2022. 3. 23. 15:34

공부한 것

코루틴

알게된 것

1. 코루틴

어제에 이어 코루틴 에 대해 학습했다. 코루틴은 코루틴 스코프 를 통해서 실행할 수 있다. 코루틴 스코프 를 사용하지 않고도 코루틴을 실행할 수 있지만 이런 경우에 작업이 종료된 코루틴에 대해 별도의 처리를 해줘야 한다.

Coroutine Scope

Coroutine Scope 는 코루틴의 범위를 정의하는 인터페이스 이다. 말 그대로 코루틴이 실행되는 범위를 지정한다. 모든 코루틴은 Scope 내에서 실행되어야 하고 액티비티 나 프래그먼트 의 생명주기 에 따라 코루틴 을 취소 하여 메모리 릭 을 방지한다. Global Scope 와 Coroutine Scope 가 존재한다.

 

1. Global Scope : 앱의 생명주기와 함께 동작하기에 별도의 생명 주기 관리가 필요 없다. 앱이 실행되고 종료되기 까지 긴 시간 실행되는 코루틴에 적합
2. Coroutine Scope : 코루틴이 필요할 때 실행하고 종료하기 위한 스코프, 특정 이벤트에 서버와 통신할 때 적합

Coroutine Scope 의 경우 Dispatcher를 통해 코루틴이 실행될 쓰레드를 지정할 수 있다.

Coroutine Dispatcher

코루틴은 Dispatcher 를 통해 쓰레드풀 내의 적절한 쓰레드 에 코루틴을 배분한다.

 

1. Dispatchers.Default : 별도의 Context를 지정하지 않은 경우 해당 디스패쳐로 자동으로 설정되며 CPU를 많이 사용하는 작업을 진행할 때 적합

2. Dispatchers.IO : 디스크 또는 네트워크의 I/O 작업을 실행할 때 적합

3. Dispatchers.Unconfined : 중단된 쓰레드에서 다시 시작하는 디스패쳐로 사용하지 않는 것을 추천

4. Dispatchers.Main : 백그라운드 쓰레드에서 코루틴을 실행하는 디스패쳐로 UI와 상호작용하는 작업을 실행할 때 적합

Coroutine Builder

Coroutine Builder 는 Coroutine Scope 의 확장 함수 로 새로운 코루틴을 실행하기 위해 사용한다.

 

1. launch : 현재 스레드를 Block 하지 않고 새로운 코루틴을 실행한다. Job 인스턴스를 반환한다.

2. Async : 현재 스레드를 Block 하지 않고 새로운 코루틴을 실행한다. Deferred<T> 인스턴스를 반환하고 await 로 값을 얻는다.

3. runBlocking : 작업이 끝날 때까지 현재 쓰레드를 Block 한다. T 타입의 결과를 반환한다.

공부할 것

MVVM

느낀 점

학습한 코루틴을 실제로 적용해보자

저작자표시 비영리 변경금지

'💻 개발 > iOS' 카테고리의 다른 글

[TIL] 22.04.18  (0) 2022.04.18
[TIL] 22.04.17  (0) 2022.04.17
[TIL] 22.03.22  (0) 2022.03.22
[TIL] 22.03.20  (0) 2022.03.20
[TIL] 22.03.19  (0) 2022.03.19
    '💻 개발/iOS' 카테고리의 다른 글
    • [TIL] 22.04.18
    • [TIL] 22.04.17
    • [TIL] 22.03.22
    • [TIL] 22.03.20
    고도고도
    고도고도
    iOS 꿀잼
    댓글쓰기
    [TIL] 22.04.17
    다음 글
    [TIL] 22.04.17
    [TIL] 22.03.22
    이전 글
    [TIL] 22.03.22

    티스토리툴바