SlideShare a Scribd company logo
1 of 30
ⓒ NAVER Connect Foundation
뉴비의 시점에서 바라본
Kotlin suspend
2022.10.20
작성자 : 이지훈
# 우당탕탕 코루틴 적용 일
기
ⓒ NAVER Connect Foundation
Coroutine이 무엇일
까
나름대로의 deep
dive
ⓒ NAVER Connect Foundation
CHAPTER 1.
Coroutine이 무엇일까?
코루틴이 무엇인지 뜻은 알고 가자!
ⓒ NAVER Connect Foundation 4
코루틴을 공부하게 된 계기
1. Coroutine이 무엇일까?
루틴의 일종으로서, 협동 루틴이라고 할 수 있다.
(코루틴의 “Co”는 with, 또는 together를 뜻한다.)
ⓒ NAVER Connect Foundation 5
1. Coroutine이 무엇일까?
Sub-Routine vs Co-
Routine
ⓒ NAVER Connect Foundation 6
1. Coroutine이 무엇일까?
공통점
Routine
컴퓨터 프로그램의 일부로서,
특정한 일을 실행하기 위한 명령
ⓒ NAVER Connect Foundation 7
Sub-Routine
예시
1. Coroutine이 무엇일까?
시작 지점과 종료 지점이
1개이다.
ⓒ NAVER Connect Foundation 8
Co-Routine
예시
1. Coroutine이 무엇일까?
ⓒ NAVER Connect Foundation 9
다들 이번 프로젝트에서 어느 부분에서 비동기적으로
구현하셨나요?
1. Coroutine이 무엇일까?
ⓒ NAVER Connect Foundation 10
동기 방식
1. Coroutine이 무엇일까?
Block
onDraw() onDraw() onDraw() onDraw()
네트워크 요청을 하고 2초 이상이 걸린다면?
ⓒ NAVER Connect Foundation 11
콜백 방식
1. Coroutine이 무엇일까?
onDraw()
onDraw() onDraw() onDraw() onDraw()
ⓒ NAVER Connect Foundation 12
코루틴 방식
1. Coroutine이 무엇일까?
Supend
onDraw() onDraw() onDraw() Resume
onDraw()
ⓒ NAVER Connect Foundation 13
단지 suspend 밖에 붙이지 않았는데?
1. Coroutine이 무엇일까?
ⓒ NAVER Connect Foundation
CHAPTER 2.
나름대로의 deep-dive!
suspend function
ⓒ NAVER Connect Foundation 15
suspend
2. suspend function
ⓒ NAVER Connect Foundation 16
2. suspend function
ⓒ NAVER Connect Foundation 17
decompile을 해보면?
2. suspend function
ⓒ NAVER Connect Foundation 18
Continuation
2. suspend function
ⓒ NAVER Connect Foundation
update()
19
Continuation
나 어디까지 진행했지?..
Continuation 나 어디까지 했어?
signup()
2. suspend function
ⓒ NAVER Connect Foundation 20
2. suspend function
ⓒ NAVER Connect Foundation 21
2. suspend function
ⓒ NAVER Connect Foundation 22
2. suspend function
Continuation 객체를 만들고
invokeSuspend는 result를 갱신하고, 본인을 다시 호출하네!
ⓒ NAVER Connect Foundation 23
2. suspend function
ⓒ NAVER Connect Foundation 24
2. suspend function
실행할 때마다 result, label을 저장하고
다시 호출될 때 switch에서 label을 기준으로 실행하는구나!
ⓒ NAVER Connect Foundation 25
Kotlin으로 변환
2. suspend function
ⓒ NAVER Connect Foundation 26
2. suspend function
Continuation이 Callback과 역할을 대신해주고 있던거구나!
ⓒ NAVER Connect Foundation 27
2. suspend function
ⓒ NAVER Connect Foundation 28
2. suspend function
콜백말고
코루틴 써봐
한 번 사용만
이라도…
suspend
대단한
놈이잖아
ⓒ NAVER Connect Foundation
Q&A
ⓒ NAVER Connect Foundation
참고 자료
꿈 많은 개발자가 되자 – Kotlin coroutine suspend? 디컴파일을 통해 알아보자
Chang W.Doh – Kotlin의 Coroutine은 어떻게 동작하는가
Android Developers – Suspend Functions – Kotlin Vocabulary
JetBrainsTV – Deep Dive into Coroutines on JVM by Roman Elizarov
Kotlin 공식문서 – Kotlin Language Specification
NAVER Engineering – 화려한 코루틴이 내 앱을 감싸네! 코루틴으로 작성해보는 깔끔한 비동기 코드
NAVER Engineering – 안드로이드에서 코루틴은 어떻게 적용할 수 있을까?

More Related Content

What's hot

Migrating from AngularJS when you can't use the word "Big Bang@
Migrating from AngularJS when you can't use the word "Big Bang@Migrating from AngularJS when you can't use the word "Big Bang@
Migrating from AngularJS when you can't use the word "Big Bang@Asim Hussain
 
Understanding Juju Charms
Understanding  Juju CharmsUnderstanding  Juju Charms
Understanding Juju CharmsDemis Gomes
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to dockerWei-Ting Kuo
 
Continuous Integration of Mobile Apps with Docker and Appium
Continuous Integration of Mobile Apps with Docker and AppiumContinuous Integration of Mobile Apps with Docker and Appium
Continuous Integration of Mobile Apps with Docker and AppiumEmergya
 
20220716_만들면서 느껴보는 POP
20220716_만들면서 느껴보는 POP20220716_만들면서 느껴보는 POP
20220716_만들면서 느껴보는 POPChiwon Song
 
Envoy 를 이용한 코드 배포 자동화
Envoy 를 이용한 코드 배포 자동화Envoy 를 이용한 코드 배포 자동화
Envoy 를 이용한 코드 배포 자동화Juwon Kim
 
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移まべ☆てっく運営
 
Master Continuous Delivery with CloudBees Jenkins Platform
Master Continuous Delivery with CloudBees Jenkins PlatformMaster Continuous Delivery with CloudBees Jenkins Platform
Master Continuous Delivery with CloudBees Jenkins Platformdcjuengst
 
Gradle Kotlin 컨벤션 플러그인으로 효율적으로 멀티 모듈 관리하기
Gradle Kotlin 컨벤션 플러그인으로 효율적으로 멀티 모듈 관리하기Gradle Kotlin 컨벤션 플러그인으로 효율적으로 멀티 모듈 관리하기
Gradle Kotlin 컨벤션 플러그인으로 효율적으로 멀티 모듈 관리하기YoungjikYoon
 
Introduction to Docker - VIT Campus
Introduction to Docker - VIT CampusIntroduction to Docker - VIT Campus
Introduction to Docker - VIT CampusAjeet Singh Raina
 
Introduction openstack horizon
Introduction openstack horizonIntroduction openstack horizon
Introduction openstack horizonJim Yeh
 
왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법GeunCheolYeom
 
VimExcelのご紹介
VimExcelのご紹介VimExcelのご紹介
VimExcelのご紹介Xls Vim
 
Migration from AngularJS to Angular
Migration from AngularJS to AngularMigration from AngularJS to Angular
Migration from AngularJS to AngularAleks Zinevych
 
Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기raccoony
 
Introduction to docker swarm
Introduction to docker swarmIntroduction to docker swarm
Introduction to docker swarmWalid Ashraf
 
Installing and running Postfix within a docker container from the command line
Installing and running Postfix within a docker container from the command lineInstalling and running Postfix within a docker container from the command line
Installing and running Postfix within a docker container from the command linedotCloud
 
Dependency Injection with Dagger 2 presentation
Dependency Injection with Dagger 2 presentationDependency Injection with Dagger 2 presentation
Dependency Injection with Dagger 2 presentationJT Liew
 
MVC, MVVM, ReactorKit, VIPER를 거쳐 RIB 정착기
MVC, MVVM, ReactorKit, VIPER를 거쳐 RIB 정착기MVC, MVVM, ReactorKit, VIPER를 거쳐 RIB 정착기
MVC, MVVM, ReactorKit, VIPER를 거쳐 RIB 정착기정민 안
 

What's hot (20)

Migrating from AngularJS when you can't use the word "Big Bang@
Migrating from AngularJS when you can't use the word "Big Bang@Migrating from AngularJS when you can't use the word "Big Bang@
Migrating from AngularJS when you can't use the word "Big Bang@
 
Understanding Juju Charms
Understanding  Juju CharmsUnderstanding  Juju Charms
Understanding Juju Charms
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 
Continuous Integration of Mobile Apps with Docker and Appium
Continuous Integration of Mobile Apps with Docker and AppiumContinuous Integration of Mobile Apps with Docker and Appium
Continuous Integration of Mobile Apps with Docker and Appium
 
20220716_만들면서 느껴보는 POP
20220716_만들면서 느껴보는 POP20220716_만들면서 느껴보는 POP
20220716_만들면서 느껴보는 POP
 
Envoy 를 이용한 코드 배포 자동화
Envoy 를 이용한 코드 배포 자동화Envoy 를 이용한 코드 배포 자동화
Envoy 를 이용한 코드 배포 자동화
 
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
 
Master Continuous Delivery with CloudBees Jenkins Platform
Master Continuous Delivery with CloudBees Jenkins PlatformMaster Continuous Delivery with CloudBees Jenkins Platform
Master Continuous Delivery with CloudBees Jenkins Platform
 
Gradle Kotlin 컨벤션 플러그인으로 효율적으로 멀티 모듈 관리하기
Gradle Kotlin 컨벤션 플러그인으로 효율적으로 멀티 모듈 관리하기Gradle Kotlin 컨벤션 플러그인으로 효율적으로 멀티 모듈 관리하기
Gradle Kotlin 컨벤션 플러그인으로 효율적으로 멀티 모듈 관리하기
 
Introduction to Docker - VIT Campus
Introduction to Docker - VIT CampusIntroduction to Docker - VIT Campus
Introduction to Docker - VIT Campus
 
Introduction openstack horizon
Introduction openstack horizonIntroduction openstack horizon
Introduction openstack horizon
 
왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법
 
VimExcelのご紹介
VimExcelのご紹介VimExcelのご紹介
VimExcelのご紹介
 
Migration from AngularJS to Angular
Migration from AngularJS to AngularMigration from AngularJS to Angular
Migration from AngularJS to Angular
 
Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기
 
Node.js 기본
Node.js 기본Node.js 기본
Node.js 기본
 
Introduction to docker swarm
Introduction to docker swarmIntroduction to docker swarm
Introduction to docker swarm
 
Installing and running Postfix within a docker container from the command line
Installing and running Postfix within a docker container from the command lineInstalling and running Postfix within a docker container from the command line
Installing and running Postfix within a docker container from the command line
 
Dependency Injection with Dagger 2 presentation
Dependency Injection with Dagger 2 presentationDependency Injection with Dagger 2 presentation
Dependency Injection with Dagger 2 presentation
 
MVC, MVVM, ReactorKit, VIPER를 거쳐 RIB 정착기
MVC, MVVM, ReactorKit, VIPER를 거쳐 RIB 정착기MVC, MVVM, ReactorKit, VIPER를 거쳐 RIB 정착기
MVC, MVVM, ReactorKit, VIPER를 거쳐 RIB 정착기
 

More from CONNECT FOUNDATION

부스트캠프 웹・모바일 8기 설명회 (2023년)
부스트캠프 웹・모바일 8기 설명회 (2023년)부스트캠프 웹・모바일 8기 설명회 (2023년)
부스트캠프 웹・모바일 8기 설명회 (2023년)CONNECT FOUNDATION
 
[부스트캠프 웹・모바일 7기 Tech Talk]임현택_OS 그냥 재미로
[부스트캠프 웹・모바일 7기 Tech Talk]임현택_OS 그냥 재미로[부스트캠프 웹・모바일 7기 Tech Talk]임현택_OS 그냥 재미로
[부스트캠프 웹・모바일 7기 Tech Talk]임현택_OS 그냥 재미로CONNECT FOUNDATION
 
[부스트캠프 웹・모바일 7기 Tech Talk]오승민_Swift의 Protocol에는 감동이 있다
[부스트캠프 웹・모바일 7기 Tech Talk]오승민_Swift의 Protocol에는 감동이 있다[부스트캠프 웹・모바일 7기 Tech Talk]오승민_Swift의 Protocol에는 감동이 있다
[부스트캠프 웹・모바일 7기 Tech Talk]오승민_Swift의 Protocol에는 감동이 있다CONNECT FOUNDATION
 
[부스트캠프 웹・모바일 7기 Tech Talk]안병준_프론트엔드,어쩌다 여기까지
[부스트캠프 웹・모바일 7기 Tech Talk]안병준_프론트엔드,어쩌다 여기까지[부스트캠프 웹・모바일 7기 Tech Talk]안병준_프론트엔드,어쩌다 여기까지
[부스트캠프 웹・모바일 7기 Tech Talk]안병준_프론트엔드,어쩌다 여기까지CONNECT FOUNDATION
 
[부스트캠프 웹・모바일 7기 Tech Talk]이휘찬-의존성 관리 어디까지 알고있니
[부스트캠프 웹・모바일 7기 Tech Talk]이휘찬-의존성 관리 어디까지 알고있니[부스트캠프 웹・모바일 7기 Tech Talk]이휘찬-의존성 관리 어디까지 알고있니
[부스트캠프 웹・모바일 7기 Tech Talk]이휘찬-의존성 관리 어디까지 알고있니CONNECT FOUNDATION
 
[부스트캠프 웹・모바일 7기 Tech Talk]김지원_너와 나의 함수형 프로그래밍
[부스트캠프 웹・모바일 7기 Tech Talk]김지원_너와 나의 함수형 프로그래밍[부스트캠프 웹・모바일 7기 Tech Talk]김지원_너와 나의 함수형 프로그래밍
[부스트캠프 웹・모바일 7기 Tech Talk]김지원_너와 나의 함수형 프로그래밍CONNECT FOUNDATION
 
[부스트캠프 웹・모바일 7기 Tech Talk]김성은_Recoil
[부스트캠프 웹・모바일 7기 Tech Talk]김성은_Recoil[부스트캠프 웹・모바일 7기 Tech Talk]김성은_Recoil
[부스트캠프 웹・모바일 7기 Tech Talk]김성은_RecoilCONNECT FOUNDATION
 
[부스트캠프 웹・모바일 7기 Tech Talk]고병학_WWDC 뭘 볼까
[부스트캠프 웹・모바일 7기 Tech Talk]고병학_WWDC 뭘 볼까[부스트캠프 웹・모바일 7기 Tech Talk]고병학_WWDC 뭘 볼까
[부스트캠프 웹・모바일 7기 Tech Talk]고병학_WWDC 뭘 볼까CONNECT FOUNDATION
 
[특강] 개발자의 학습과 성장 / 이선협 (Cobalt, Inc.)
[특강] 개발자의 학습과 성장 / 이선협 (Cobalt, Inc.)[특강] 개발자의 학습과 성장 / 이선협 (Cobalt, Inc.)
[특강] 개발자의 학습과 성장 / 이선협 (Cobalt, Inc.)CONNECT FOUNDATION
 
[특강] 현업 개발자에게 듣는 모바일 개발자의 삶과 매력 / 노수진(Momenti)
 [특강] 현업 개발자에게 듣는 모바일 개발자의 삶과 매력 / 노수진(Momenti) [특강] 현업 개발자에게 듣는 모바일 개발자의 삶과 매력 / 노수진(Momenti)
[특강] 현업 개발자에게 듣는 모바일 개발자의 삶과 매력 / 노수진(Momenti)CONNECT FOUNDATION
 
[특강] 현업 개발자에게 듣는 모바일 개발자의 삶과 매력 / 노현석(카카오뱅크)
[특강] 현업 개발자에게 듣는 모바일 개발자의 삶과 매력 / 노현석(카카오뱅크)[특강] 현업 개발자에게 듣는 모바일 개발자의 삶과 매력 / 노현석(카카오뱅크)
[특강] 현업 개발자에게 듣는 모바일 개발자의 삶과 매력 / 노현석(카카오뱅크)CONNECT FOUNDATION
 
부스트캠프 웹∙모바일 7기 설명회
부스트캠프 웹∙모바일 7기 설명회부스트캠프 웹∙모바일 7기 설명회
부스트캠프 웹∙모바일 7기 설명회CONNECT FOUNDATION
 
[부스트캠프 Tech Talk] 배지연_Structure of Model and Task
[부스트캠프 Tech Talk] 배지연_Structure of Model and Task[부스트캠프 Tech Talk] 배지연_Structure of Model and Task
[부스트캠프 Tech Talk] 배지연_Structure of Model and TaskCONNECT FOUNDATION
 
[부스트캠프 Tech Talk] 신원지_Wandb Visualization
[부스트캠프 Tech Talk] 신원지_Wandb Visualization[부스트캠프 Tech Talk] 신원지_Wandb Visualization
[부스트캠프 Tech Talk] 신원지_Wandb VisualizationCONNECT FOUNDATION
 
[부스트캠프 Tech Talk] 김제우_짝코딩(Pair Programming)
[부스트캠프 Tech Talk] 김제우_짝코딩(Pair Programming)[부스트캠프 Tech Talk] 김제우_짝코딩(Pair Programming)
[부스트캠프 Tech Talk] 김제우_짝코딩(Pair Programming)CONNECT FOUNDATION
 
[부스트캠프 Tech Talk] 김동현_리팩터링을 통한 내실 다지기
[부스트캠프 Tech Talk] 김동현_리팩터링을 통한 내실 다지기[부스트캠프 Tech Talk] 김동현_리팩터링을 통한 내실 다지기
[부스트캠프 Tech Talk] 김동현_리팩터링을 통한 내실 다지기CONNECT FOUNDATION
 
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기CONNECT FOUNDATION
 
[부스트캠프 Tech Talk] 안영진_Tackling Complexity with Easy Stuff
[부스트캠프 Tech Talk] 안영진_Tackling Complexity with Easy Stuff[부스트캠프 Tech Talk] 안영진_Tackling Complexity with Easy Stuff
[부스트캠프 Tech Talk] 안영진_Tackling Complexity with Easy StuffCONNECT FOUNDATION
 
[부스트캠프 Tech talk] 황우진 딥러닝 가볍게 구현해보기
[부스트캠프 Tech talk] 황우진  딥러닝 가볍게 구현해보기[부스트캠프 Tech talk] 황우진  딥러닝 가볍게 구현해보기
[부스트캠프 Tech talk] 황우진 딥러닝 가볍게 구현해보기CONNECT FOUNDATION
 
[부스트캠프 Tech talk] 최영근 80x24 크기의 세계로
[부스트캠프 Tech talk] 최영근  80x24 크기의 세계로[부스트캠프 Tech talk] 최영근  80x24 크기의 세계로
[부스트캠프 Tech talk] 최영근 80x24 크기의 세계로CONNECT FOUNDATION
 

More from CONNECT FOUNDATION (20)

부스트캠프 웹・모바일 8기 설명회 (2023년)
부스트캠프 웹・모바일 8기 설명회 (2023년)부스트캠프 웹・모바일 8기 설명회 (2023년)
부스트캠프 웹・모바일 8기 설명회 (2023년)
 
[부스트캠프 웹・모바일 7기 Tech Talk]임현택_OS 그냥 재미로
[부스트캠프 웹・모바일 7기 Tech Talk]임현택_OS 그냥 재미로[부스트캠프 웹・모바일 7기 Tech Talk]임현택_OS 그냥 재미로
[부스트캠프 웹・모바일 7기 Tech Talk]임현택_OS 그냥 재미로
 
[부스트캠프 웹・모바일 7기 Tech Talk]오승민_Swift의 Protocol에는 감동이 있다
[부스트캠프 웹・모바일 7기 Tech Talk]오승민_Swift의 Protocol에는 감동이 있다[부스트캠프 웹・모바일 7기 Tech Talk]오승민_Swift의 Protocol에는 감동이 있다
[부스트캠프 웹・모바일 7기 Tech Talk]오승민_Swift의 Protocol에는 감동이 있다
 
[부스트캠프 웹・모바일 7기 Tech Talk]안병준_프론트엔드,어쩌다 여기까지
[부스트캠프 웹・모바일 7기 Tech Talk]안병준_프론트엔드,어쩌다 여기까지[부스트캠프 웹・모바일 7기 Tech Talk]안병준_프론트엔드,어쩌다 여기까지
[부스트캠프 웹・모바일 7기 Tech Talk]안병준_프론트엔드,어쩌다 여기까지
 
[부스트캠프 웹・모바일 7기 Tech Talk]이휘찬-의존성 관리 어디까지 알고있니
[부스트캠프 웹・모바일 7기 Tech Talk]이휘찬-의존성 관리 어디까지 알고있니[부스트캠프 웹・모바일 7기 Tech Talk]이휘찬-의존성 관리 어디까지 알고있니
[부스트캠프 웹・모바일 7기 Tech Talk]이휘찬-의존성 관리 어디까지 알고있니
 
[부스트캠프 웹・모바일 7기 Tech Talk]김지원_너와 나의 함수형 프로그래밍
[부스트캠프 웹・모바일 7기 Tech Talk]김지원_너와 나의 함수형 프로그래밍[부스트캠프 웹・모바일 7기 Tech Talk]김지원_너와 나의 함수형 프로그래밍
[부스트캠프 웹・모바일 7기 Tech Talk]김지원_너와 나의 함수형 프로그래밍
 
[부스트캠프 웹・모바일 7기 Tech Talk]김성은_Recoil
[부스트캠프 웹・모바일 7기 Tech Talk]김성은_Recoil[부스트캠프 웹・모바일 7기 Tech Talk]김성은_Recoil
[부스트캠프 웹・모바일 7기 Tech Talk]김성은_Recoil
 
[부스트캠프 웹・모바일 7기 Tech Talk]고병학_WWDC 뭘 볼까
[부스트캠프 웹・모바일 7기 Tech Talk]고병학_WWDC 뭘 볼까[부스트캠프 웹・모바일 7기 Tech Talk]고병학_WWDC 뭘 볼까
[부스트캠프 웹・모바일 7기 Tech Talk]고병학_WWDC 뭘 볼까
 
[특강] 개발자의 학습과 성장 / 이선협 (Cobalt, Inc.)
[특강] 개발자의 학습과 성장 / 이선협 (Cobalt, Inc.)[특강] 개발자의 학습과 성장 / 이선협 (Cobalt, Inc.)
[특강] 개발자의 학습과 성장 / 이선협 (Cobalt, Inc.)
 
[특강] 현업 개발자에게 듣는 모바일 개발자의 삶과 매력 / 노수진(Momenti)
 [특강] 현업 개발자에게 듣는 모바일 개발자의 삶과 매력 / 노수진(Momenti) [특강] 현업 개발자에게 듣는 모바일 개발자의 삶과 매력 / 노수진(Momenti)
[특강] 현업 개발자에게 듣는 모바일 개발자의 삶과 매력 / 노수진(Momenti)
 
[특강] 현업 개발자에게 듣는 모바일 개발자의 삶과 매력 / 노현석(카카오뱅크)
[특강] 현업 개발자에게 듣는 모바일 개발자의 삶과 매력 / 노현석(카카오뱅크)[특강] 현업 개발자에게 듣는 모바일 개발자의 삶과 매력 / 노현석(카카오뱅크)
[특강] 현업 개발자에게 듣는 모바일 개발자의 삶과 매력 / 노현석(카카오뱅크)
 
부스트캠프 웹∙모바일 7기 설명회
부스트캠프 웹∙모바일 7기 설명회부스트캠프 웹∙모바일 7기 설명회
부스트캠프 웹∙모바일 7기 설명회
 
[부스트캠프 Tech Talk] 배지연_Structure of Model and Task
[부스트캠프 Tech Talk] 배지연_Structure of Model and Task[부스트캠프 Tech Talk] 배지연_Structure of Model and Task
[부스트캠프 Tech Talk] 배지연_Structure of Model and Task
 
[부스트캠프 Tech Talk] 신원지_Wandb Visualization
[부스트캠프 Tech Talk] 신원지_Wandb Visualization[부스트캠프 Tech Talk] 신원지_Wandb Visualization
[부스트캠프 Tech Talk] 신원지_Wandb Visualization
 
[부스트캠프 Tech Talk] 김제우_짝코딩(Pair Programming)
[부스트캠프 Tech Talk] 김제우_짝코딩(Pair Programming)[부스트캠프 Tech Talk] 김제우_짝코딩(Pair Programming)
[부스트캠프 Tech Talk] 김제우_짝코딩(Pair Programming)
 
[부스트캠프 Tech Talk] 김동현_리팩터링을 통한 내실 다지기
[부스트캠프 Tech Talk] 김동현_리팩터링을 통한 내실 다지기[부스트캠프 Tech Talk] 김동현_리팩터링을 통한 내실 다지기
[부스트캠프 Tech Talk] 김동현_리팩터링을 통한 내실 다지기
 
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기
 
[부스트캠프 Tech Talk] 안영진_Tackling Complexity with Easy Stuff
[부스트캠프 Tech Talk] 안영진_Tackling Complexity with Easy Stuff[부스트캠프 Tech Talk] 안영진_Tackling Complexity with Easy Stuff
[부스트캠프 Tech Talk] 안영진_Tackling Complexity with Easy Stuff
 
[부스트캠프 Tech talk] 황우진 딥러닝 가볍게 구현해보기
[부스트캠프 Tech talk] 황우진  딥러닝 가볍게 구현해보기[부스트캠프 Tech talk] 황우진  딥러닝 가볍게 구현해보기
[부스트캠프 Tech talk] 황우진 딥러닝 가볍게 구현해보기
 
[부스트캠프 Tech talk] 최영근 80x24 크기의 세계로
[부스트캠프 Tech talk] 최영근  80x24 크기의 세계로[부스트캠프 Tech talk] 최영근  80x24 크기의 세계로
[부스트캠프 Tech talk] 최영근 80x24 크기의 세계로
 

[부스트캠프 웹・모바일 7기 Tech Talk]이지훈_뉴비의 시점에서 바라본 Kotlin_suspend

  • 1. ⓒ NAVER Connect Foundation 뉴비의 시점에서 바라본 Kotlin suspend 2022.10.20 작성자 : 이지훈 # 우당탕탕 코루틴 적용 일 기
  • 2. ⓒ NAVER Connect Foundation Coroutine이 무엇일 까 나름대로의 deep dive
  • 3. ⓒ NAVER Connect Foundation CHAPTER 1. Coroutine이 무엇일까? 코루틴이 무엇인지 뜻은 알고 가자!
  • 4. ⓒ NAVER Connect Foundation 4 코루틴을 공부하게 된 계기 1. Coroutine이 무엇일까? 루틴의 일종으로서, 협동 루틴이라고 할 수 있다. (코루틴의 “Co”는 with, 또는 together를 뜻한다.)
  • 5. ⓒ NAVER Connect Foundation 5 1. Coroutine이 무엇일까? Sub-Routine vs Co- Routine
  • 6. ⓒ NAVER Connect Foundation 6 1. Coroutine이 무엇일까? 공통점 Routine 컴퓨터 프로그램의 일부로서, 특정한 일을 실행하기 위한 명령
  • 7. ⓒ NAVER Connect Foundation 7 Sub-Routine 예시 1. Coroutine이 무엇일까? 시작 지점과 종료 지점이 1개이다.
  • 8. ⓒ NAVER Connect Foundation 8 Co-Routine 예시 1. Coroutine이 무엇일까?
  • 9. ⓒ NAVER Connect Foundation 9 다들 이번 프로젝트에서 어느 부분에서 비동기적으로 구현하셨나요? 1. Coroutine이 무엇일까?
  • 10. ⓒ NAVER Connect Foundation 10 동기 방식 1. Coroutine이 무엇일까? Block onDraw() onDraw() onDraw() onDraw() 네트워크 요청을 하고 2초 이상이 걸린다면?
  • 11. ⓒ NAVER Connect Foundation 11 콜백 방식 1. Coroutine이 무엇일까? onDraw() onDraw() onDraw() onDraw() onDraw()
  • 12. ⓒ NAVER Connect Foundation 12 코루틴 방식 1. Coroutine이 무엇일까? Supend onDraw() onDraw() onDraw() Resume onDraw()
  • 13. ⓒ NAVER Connect Foundation 13 단지 suspend 밖에 붙이지 않았는데? 1. Coroutine이 무엇일까?
  • 14. ⓒ NAVER Connect Foundation CHAPTER 2. 나름대로의 deep-dive! suspend function
  • 15. ⓒ NAVER Connect Foundation 15 suspend 2. suspend function
  • 16. ⓒ NAVER Connect Foundation 16 2. suspend function
  • 17. ⓒ NAVER Connect Foundation 17 decompile을 해보면? 2. suspend function
  • 18. ⓒ NAVER Connect Foundation 18 Continuation 2. suspend function
  • 19. ⓒ NAVER Connect Foundation update() 19 Continuation 나 어디까지 진행했지?.. Continuation 나 어디까지 했어? signup() 2. suspend function
  • 20. ⓒ NAVER Connect Foundation 20 2. suspend function
  • 21. ⓒ NAVER Connect Foundation 21 2. suspend function
  • 22. ⓒ NAVER Connect Foundation 22 2. suspend function Continuation 객체를 만들고 invokeSuspend는 result를 갱신하고, 본인을 다시 호출하네!
  • 23. ⓒ NAVER Connect Foundation 23 2. suspend function
  • 24. ⓒ NAVER Connect Foundation 24 2. suspend function 실행할 때마다 result, label을 저장하고 다시 호출될 때 switch에서 label을 기준으로 실행하는구나!
  • 25. ⓒ NAVER Connect Foundation 25 Kotlin으로 변환 2. suspend function
  • 26. ⓒ NAVER Connect Foundation 26 2. suspend function Continuation이 Callback과 역할을 대신해주고 있던거구나!
  • 27. ⓒ NAVER Connect Foundation 27 2. suspend function
  • 28. ⓒ NAVER Connect Foundation 28 2. suspend function 콜백말고 코루틴 써봐 한 번 사용만 이라도… suspend 대단한 놈이잖아
  • 29. ⓒ NAVER Connect Foundation Q&A
  • 30. ⓒ NAVER Connect Foundation 참고 자료 꿈 많은 개발자가 되자 – Kotlin coroutine suspend? 디컴파일을 통해 알아보자 Chang W.Doh – Kotlin의 Coroutine은 어떻게 동작하는가 Android Developers – Suspend Functions – Kotlin Vocabulary JetBrainsTV – Deep Dive into Coroutines on JVM by Roman Elizarov Kotlin 공식문서 – Kotlin Language Specification NAVER Engineering – 화려한 코루틴이 내 앱을 감싸네! 코루틴으로 작성해보는 깔끔한 비동기 코드 NAVER Engineering – 안드로이드에서 코루틴은 어떻게 적용할 수 있을까?