Language/Kotlin
Kotlin Coroutine Context, Coroutine Builder
์ก์ด ๐ซง
2022. 11. 1. 14:30
Coroutine Context
- ์ฝ๋ฃจํด์ ํญ์ Coroutine Context๋ก ๊ตฌ์ฑ๋ ์ฝํ ์คํธ ์์์ ์คํ๋๋๋ฐ, ์ด ์ฝํ ์คํธ๋ Dispatchers์ Job์ผ๋ก ๊ตฌ์ฑ๋๋ค.
- Dispatchers๋ ์ฝ๋ฃจํด์ด ์คํ๋ ์ค๋ ๋๋ฅผ ์ง์ ํ๋ ์ญํ
- Default : CPU์์ ๋ง์ ์ฐ์ฐ์ด ํ์ํ ์ฒ๋ฆฌ
- ๋์์์ ๊ฐ๋ฅํ ์ต๋ ๊ฐ์๋ CPU ์ฝ์ด ์์ ๊ฐ๋ค.
- IO : ํ์ผ ์
์ถ๋ ฅ, ๋คํธ์ํฌ ์ฝ ๋ฑ ์ค๋ ๋๊ธฐํ๋ ์ํฉ์ผ ๋
- Blocking IO์ฉ ๊ณต์ ์ค๋ ๋ํ์์ ๋์
- Default์ ์ค๋ ๋๋ฅผ ๊ณต์ ํ๋ฏ๋ก withContext์์ Dispatcher ๋ณ๊ฒฝ ์, ์ปจํ ์คํธ ์ค์์นญ ํ์ง ์๊ณ ๋์ผํ ์ค๋ ๋์์ ์คํ๋จ
- Main: ์ฝ๋ฃจํด์์ ์ฒ๋ฆฌ๋ ๊ฐ์ UI์ ๋ฐ์ํ ๋
- ๋ฉ์ธ์ค๋ ๋์์ ๋์
- UnConfined
- ๋ฉ์ธ์ค๋ ๋์์ ๋์
- Default : CPU์์ ๋ง์ ์ฐ์ฐ์ด ํ์ํ ์ฒ๋ฆฌ
Coroutine Builder
- launch
- ๋ฉ์ธ ์ค๋ ๋๋ฅผ ๋ธ๋กํ์ง ์๋ ์ฝ๋ฃจํด ์์ ์คํ
- ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ ํ์๊ฐ ์๋ ์์ ์ ์ฌ์ฉ
- async
- ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ ํ์๊ฐ ์๋ ์์ ์ ์ฌ์ฉ
- runBlocking
- ๋ฉ์ธ ์ค๋ ๋๋ฅผ ๋ธ๋กํ๊ณ ์์ ์คํ
- ํ ์คํธ ์ฉ๋์์ ์ฌ์ฉ, ์ฝ๋ฃจํด์ ์ํด์๋ ์ฌ์ฉ x
- withContext
- withContext๋ฅผ ์ด์ฉํ ์ค์ฝํ ์ ํ์ OS์์ ๊ด๋ฆฌ๋๋ฏ๋ก ์ค๋ฒํค๋๊ฐ ์ ์
- ์ปจํ ์คํธ ์์์ ์์ฐจ์ ์ผ๋ก ์คํ๋จ
[์ฐธ๊ณ ]
https://cliearl.github.io/posts/android/coroutine-principle/