Simple&Natural
Coroutine - withContext 와 coroutineScope 의 비교 본문
withContext와 coroutineScope의 비교
두 함수 모두 suspend fun으로서 코루틴 내부에서 블록을 중단시키기 때문에 유사해 보인다.
그러나, coroutineScope는 withContext의 한 유형으로 볼 수 있다.
즉, coroutineScope는 withContext(this.coroutineContext) 와 본질적으로 같은 의미를 지닌다.
coroutineScope는 Dispatcher를 설정할 수 없다 (무조건 현재 호출한 context를 사용하기 때문이다)
- coroutineScope는 에러처리 등의 목적으로 특정 코드를 하나의 블럭으로 묶고 싶을 때 사용
- withContext는 해당 코드블럭을 특정 Context에서 실행하고 싶을 때 사용하는 용도 (네트워크 작업을 위한 IO Dispatcher 등)
하지만 coroutineScope 내에서 Exception을 Throw하면 전체 부모 루틴이 중지되는데 아래의 문구를 살펴보면 에러 핸들링 목적으로 사용한다는 말이 잘 이해가 되지 않는다.
1번자료
coroutineScope is meant to provide a scope for multiple parallel coroutines in which all will be canceled, if any fails.
withContext is designed to be used to switch the context (eg. the Dispatcher) for the given block of code.
2번자료
Yes, they should behave the same way. They are intended for different use cases though.
coroutineScope is meant to provide a scope for multiple parallel coroutines in which all will be canceled, if any fails.
withContext is designed to be used to switch the context (eg. the Dispatcher) for the given block of code.
[참고자료]
3. https://tourspace.tistory.com/154
'언어 > Java&Kotlin' 카테고리의 다른 글
Shuffle 구현 (0) | 2020.10.30 |
---|---|
Coroutine Async 의 동작 시점 (0) | 2020.10.11 |
자바 메모리 관리 - 스택&힙 (0) | 2020.06.25 |
코틀린 SAM 인터페이스의 람다식 관련 (0) | 2020.04.08 |
Kotlin의 null처리 (0) | 2020.03.20 |