songining

Coroutine Context

  • ์ฝ”๋ฃจํ‹ด์€ ํ•ญ์ƒ Coroutine Context๋กœ ๊ตฌ์„ฑ๋œ ์ฝ˜ํ…์ŠคํŠธ ์•ˆ์—์„œ ์‹คํ–‰๋˜๋Š”๋ฐ, ์ด ์ฝ˜ํ…์ŠคํŠธ๋Š” Dispatchers์™€ Job์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.
  • Dispatchers๋Š” ์ฝ”๋ฃจํ‹ด์ด ์‹คํ–‰๋  ์Šค๋ ˆ๋“œ๋ฅผ ์ง€์ •ํ•˜๋Š” ์—ญํ• 
    • Default : CPU์—์„œ ๋งŽ์€ ์—ฐ์‚ฐ์ด ํ•„์š”ํ•œ ์ฒ˜๋ฆฌ
      • ๋™์‹œ์ž‘์—… ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋Š” CPU ์ฝ”์–ด ์ˆ˜์™€ ๊ฐ™๋‹ค.
    • IO : ํŒŒ์ผ ์ž…์ถœ๋ ฅ, ๋„คํŠธ์›Œํฌ ์ฝœ ๋“ฑ ์˜ค๋ž˜ ๋Œ€๊ธฐํ•˜๋Š” ์ƒํ™ฉ์ผ ๋•Œ
      • Blocking IO์šฉ ๊ณต์œ  ์Šค๋ ˆ๋“œํ’€์—์„œ ๋™์ž‘
      • Default์™€ ์Šค๋ ˆ๋“œ๋ฅผ ๊ณต์œ ํ•˜๋ฏ€๋กœ withContext์—์„œ Dispatcher ๋ณ€๊ฒฝ ์‹œ, ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ ํ•˜์ง€ ์•Š๊ณ  ๋™์ผํ•œ ์Šค๋ ˆ๋“œ์—์„œ ์‹คํ–‰๋จ
    • Main: ์ฝ”๋ฃจํ‹ด์—์„œ ์ฒ˜๋ฆฌ๋œ ๊ฐ’์„ UI์— ๋ฐ˜์˜ํ•  ๋•Œ
      • ๋ฉ”์ธ์Šค๋ ˆ๋“œ์—์„œ ๋™์ž‘
    • UnConfined
      • ๋ฉ”์ธ์Šค๋ ˆ๋“œ์—์„œ ๋™์ž‘

Coroutine Builder

  • launch
    • ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๋ฅผ ๋ธ”๋กํ•˜์ง€ ์•Š๋Š” ์ฝ”๋ฃจํ‹ด ์ž‘์—… ์‹คํ–‰
    • ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ์ž‘์—…์— ์‚ฌ์šฉ
  • async
    • ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•  ํ•„์š”๊ฐ€ ์žˆ๋Š” ์ž‘์—…์— ์‚ฌ์šฉ
  • runBlocking
    • ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๋ฅผ ๋ธ”๋กํ•˜๊ณ  ์ž‘์—… ์‹คํ–‰
    • ํ…Œ์ŠคํŠธ ์šฉ๋„์—์„œ ์‚ฌ์šฉ, ์ฝ”๋ฃจํ‹ด์„ ์œ„ํ•ด์„œ๋Š” ์‚ฌ์šฉ x
  • withContext
    • withContext๋ฅผ ์ด์šฉํ•œ ์Šค์ฝ”ํ”„ ์ „ํ™˜์€ OS์—์„œ ๊ด€๋ฆฌ๋˜๋ฏ€๋กœ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ ์Œ
    • ์ปจํ…์ŠคํŠธ ์•ˆ์—์„œ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋จ

 

[์ฐธ๊ณ ]

https://cliearl.github.io/posts/android/coroutine-principle/

'Language > Kotlin' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Kotlin ์œ„์ž„ ํ”„๋กœํผํ‹ฐ Observable  (0) 2023.09.05
[Kotlin] associateBy, groupBy  (0) 2023.02.21
Kotlin inline fun, reified  (0) 2022.10.28