인프런 커뮤니티 질문&답변

lkckss123님의 프로필 이미지
lkckss123

작성한 질문수

2시간으로 끝내는 코루틴

CoroutineScope 와 withContext 의 차이를 잘 모르겠습니다.

작성

·

389

1

강의를 듣다보면 CoroutineScope 와 withContext 의 차이를 정확히 모르겠습니다. withContext 는 context 에 변화를 줄 수 있어서 withContext(Dispatchers.Default) 이런 식으로 쓴다고 하는데, CoroutineScope 도 동일하게 CoroutineScope(Dispatchers.Default).launch 이런식으로 context 를 설정해줄 수 있는데 어떨 때 CoroutineScope 를 쓰고 어떨 때 withContext 를 쓰는지 잘 모르겠습니다.

답변 1

0

최태현님의 프로필 이미지
최태현
지식공유자

안녕하세요! lkckss123님! 질문 남겨 주셔서 감사합니다! 😊

저는 다음과 같이 생각하고 있습니다.

 

CoroutineScope() 은 말 그대로 새로운 코루틴 영역을 생성하는 것입니다. 따라서 기존에는 코루틴을 만들 수 없던 상황에서, 코루틴을 만들고 싶을 때 사용할 수 있죠. 보통은 새로운 코루틴 영역 아래서 여러 코루틴을 실행시켜 한 번에 관리하려 할 때 사용합니다.

 

withContext()기존에 있는 코루틴 영역에서 관리하는 context만 바꾼 코루틴 영역을 만드는 것입니다. 실제로 suspend 함수이기 때문에 또 다른 suspend 함수에서만 실행할 수 있다는 것이 특징입니다. 보통은 기존에 코루틴 영역이 있는데 Dispatcher와 같은 특정 context element만 바꾸고 싶을 때 사용합니다.

 

답변이 도움이 되었으면 좋겠습니다. 감사합니다! 🙏

lkckss123님의 프로필 이미지
lkckss123

작성한 질문수

질문하기