Why 99% Are Using Coroutine Dispatchers WRONG!
- 코루틴 디스패처 오용은 흔하며, IO 작업 시
withContext(Dispatchers.IO)
를 불필요하게 사용하는 경우가 많음. 🤦♀️
Dispatchers.IO
와 Dispatchers.Default
의 차이는 스레드 풀 크기이며, IO는 네트워크/파일 작업, Default는 CPU 집약적 작업에 적합. 🤹
- 메인 스레드 안전(Main-safety) 원칙에 따라, blocking 코드를 suspending 함수로 변환하는 함수가 적절한 디스패처로 전환해야 함. 👩💻
withContext
블록 내부에 blocking 코드가 없다면 디스패처 전환은 불필요하며, suspending 함수만 있다면 잘못된 사용임. 🙅♀️
- UI 업데이트는 메인 스레드에서만 가능하지만, Compose에서는 해당되지 않음. 🎨
- 복잡한 데이터 매핑과 같이 CPU를 많이 사용하는 작업은
Dispatchers.Default
에서 실행하는 것이 효율적임. 🧠
- Flow 체인 전체를 특정 디스패처에서 실행하여 UI 스레드 차단을 방지할 수 있음. ⛓️