๐กCoroutineDispatcher์์ IO์ Default์ ์ฐจ์ด์ ๋ํด์ ํ์ตํ์์ต๋๋ค.
CoroutineDispatcher
- ์ฝ๋ฃจํด ๋์คํจ์ฒ๋ ์ฝ๋ฃจํด์ ์ค๋ ๋๋ก ๋ณด๋ด๋ ์ญํ ์ ํฉ๋๋ค.
- ๋ชจ๋ ์์ ์ ์ค๋ ๋ ์์์ ์คํ๋์ด์ผ ํ๊ณ , ์ฝ๋ฃจํด ๋์ ์์ ์ด๋ฏ๋ก ์ค๋ ๋ ์์์๋ง ์คํํ ์ ์์ต๋๋ค.
- Coroutine์ ์ค๋ ๋ํ์ ๋ง๋ค๊ณ Dispatcher๋ Coroutine์ ์ ์ ํ Thread์ ๋ณด๋ด ์์ ์ ์ํํ ์ ์๋๋ก ๋ฐฐ๋ถํฉ๋๋ค.
Dispathcer์ ์ข ๋ฅ
- CoroutineDispatcher์๋ Main, IO, Default๊ฐ ์์ต๋๋ค.
- ์ผ๋ฐ์ ์ผ๋ก IO Dispatcher์ ๊ฒฝ์ฐ Difault Dispatcher์ ๋นํด ํ๊ท 1~2์ด ์ ๋ ๋น ๋ฅธ ์ฒ๋ฆฌ ์๋๋ฅผ ๋ณด์ฌ์ค๋๋ค.
Dispatcher.Main
- UI์ ์ง์ ์ํธ ์์ฉ์ ํ๋ ์์ ์ ๋ฉ์ธ Thread์ ์ ๋ฌํ๋ ์ญํ ์ ํฉ๋๋ค.
- ๋ฉ์ธ(UI) ์ค๋ ๋์์ ์คํ๋๋ ์์ ์ ์ฒ๋ฆฌํ๋ฉฐ, UI์ ์ํธ์์ฉํ๊ฑฐ๋ UI ๊ด๋ จ ์์ ์ ์ํํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
- ๋น๋๊ธฐ ์์ ์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋์์ ์คํํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
- ๋ฌด๊ฑฐ์ด ์์ ์ด ์๋ ๊ฒฝ๋ ์์ ์ ์ด์ฒจ์ ๋ง์ถฐ์ผํ๋ฉฐ, ๊ทธ๋ ์ง ์์ผ๋ฉด ANR ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
Dispacher.IO
- ๋คํธ์ํฌ, DB ์ ์ถ๋ ฅ์ด ์๋ ์์ ๋ค์ ๋ํด ์ ์ ํ Thread๋ก ํ ๋นํ๋ ์ญํ ์ ํฉ๋๋ค.
- ์ต๋ 64๊ฐ์ Thread๋ฅผ ์์ฑํ์ฌ ํ ๋น์ด ๊ฐ๋ฅํฉ๋๋ค.
- Default Dispatcher์ ์ค๋ ๋๋ฅผ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ switching์ผ๋ก ์ธํ ์ค๋ฒํค๋๋ฅผ ์ผ์ผํค์ง ์์ต๋๋ค.
Dispatcher.Default
- ์ฐ์์ ์ธ ์์ , CPU๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ ์์ ๋ฑ์ ์ํํ ๋ ์ ์ ํ Thread๋ก ํ ๋นํ๋ ์ญํ ์ ํฉ๋๋ค.
- ์ค๋ ๋ ํ์์ ๋ณดํต CPU Core์ ๊ฐ์์ ํด๋นํ๋ Thread๋ฅผ ์์ฑํ์ฌ ํ ๋น์ด ๊ฐ๋ฅํฉ๋๋ค.
- ์ด ๋์คํจ์ฒ๋ JVM์ ๊ณต์ ์ค๋ ๋ํ์ ์ฌ์ฉํ๊ณ , ๋์ ์์
๊ฐ๋ฅ ์ต๋ ๊ฐฏ์๋ CPU์ ์ฝ์ด ์์ ๊ฐ์ต๋๋ค.
- 4์ฝ์ด CPU์ ๊ฒฝ์ฐ ์ต๋ 4๊ฐ์ ๋ณ๋ ฌ ์์
๋ณดํต ํ๋์ Core์์ ํ๋์ Thread๋ฅผ ์ฒ๋ฆฌํ์ง๋ง, ์์ฆ์ 2๊ฐ์ Thread๋ฅผ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
Dispacher.IO vs Dispatcher.Default
- ๋ ๋์คํจ์ฒ๋ ์ฝ๋ฃจํด์์ ๋น๋๊ธฐ ์์ ์ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉํ๋ ์ค๋ ๋ํ์ ๋ค๋ฃจ๋ฉฐ, ์๋ก ๋ค๋ฅธ ๋ชฉ์ ์ ๋ง๊ฒ ์ต์ ํ๋์ด ์์ต๋๋ค.
Dispacher.IO
- I/O ๋ฐ์ด๋ ์์ , ํ์ผ ์ ์ถ๋ ฅ, ๋คํธ์ํฌ ๋ฑ์ ์ต์ ํ๋ ๋์คํจ์ฒ ์ ๋๋ค.
- ๋๊ท๋ชจ ์ค๋ ๋ ํ์ ์ฌ์ฉํ๋ฉฐ, ๋์ ์์ ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก 64๊ฐ ์ด์ ํ์ฉ๋ฉ๋๋ค.
Dispacher.Default
- CPU ์ง์ฝ์ ์ธ ์์ ์ ์ต์ ํ๋ ๋์คํจ์ฒ์ ๋๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก CPU ๋ ผ๋ฆฌ์ ์ฝ์ด ์๋งํผ ์ค๋ ๋๋ฅผ ํ์ฉํฉ๋๋ค.
Runtime.getRuntime().availableProcessors()
- ๋ณต์กํ ๊ณ์ฐ, ๋ฐ์ดํฐ ์ฒ๋ฆฌ, CPU๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ ์์ ์ ์ ํฉํฉ๋๋ค.
์ ๋ฆฌ
- Dispacher.Default๋ CPU ์ง์ฝ์ ์ธ ์์ ์ ์ต์ ํ๋์ด ์์ผ๋ฉฐ, CPU ์ฝ์ด ์๋งํผ์ ์ค๋ ๋๋ฅผ ์ฌ์ฉํ์ฌ ํจ์จ์ ์ผ๋ก ์์ ์ ์ฒ๋ฆฌํฉ๋๋ค.
- Dispacher.IO๋ I/O ๋ฐ์ด๋ ์์ ์ ์ ํฉํ๋ฉฐ, ๊ธฐ๋ณธ์ ์ผ๋ก ๋ง์ ์์ ์ค๋ ๋๋ฅผ ์ฌ์ฉํด ๋ธ๋กํน ์์ ์ ์ฒ๋ฆฌํ๋ ๋ฐ ์ ๋ฆฌํฉ๋๋ค.
- Dispacher.Main์ UI ๊ด๋ จ ์์ ์ ์๋๋ก์ด๋ ๋ฉ์ธ ์ค๋ ๋์์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
์ฐธ๊ณ
https://medium.com/@ans188/android-dispatcher-io์-default์-์ฐจ์ด-25871b54dc4d