인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

drrg9211님의 프로필 이미지

작성한 질문수

2시간으로 끝내는 코루틴

7강. CoroutineScope과 CoroutineContext

7강에 대해서 궁금증이 있는데요

작성

·

35

1

안녕하세요! 강의를 잘보고 있습니다.

강의를 보다가 질문이 있는데요,.

같은 디스패쳐를 썼을때, 자식 코루틴이 코루틴 스코프를 새로 만드는게 어떤 효과를 기대할 수 있나요? 스코프를 새로 만드는게 어떤 이점이 있는지 잘이해가 안되는 것 같습니다..

또 부모코루틴안에서 새로운 코루틴 스코프를 만든 자식 코루틴과 그냥 자식 코루틴 이 2개가 있을 때 동작하는 방식에서도 차이가 있는지 궁금합니다!

답변 2

0

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

안녕하세요~ drrg9211님! 🙂 하나씩 답변 드려 보겠습니다.

 

[1. 코루틴 스코프를 새로 만드는 것은 효과]

  • 같은 Dispatcher를 사용했을 때 코루틴 안에서 다시 한 번 새로운 코루틴 Scope를 만든다면... 사실상 무언가 효과를 기대하기는 어렵다고 생각됩니다.

  • 결국 코루틴 Scope는 코루틴을 구성하는 여러 요소 (Context) 를 모아둔 영역인데, 별다른 Context의 변경 없이 새로운 Scope을 만든다고 해서 딱히 특별할 건 없거든요!

제 개인적으로도 코루틴을 사용하며 코루틴 Scope을 말씀해주신 방식으로는 사용해보지 않은 것 같습니다.

 

[2. 상위 코루틴에서 하위 코루틴을 만들 때]

  • 이 때도 비슷합니다! 사실 새로운 CoroutineScope를 만드는 것은 자식 코루틴을 만드는 것과 유사한데요, 결국 Job 으로 표현되는 하나의 코루틴도 CoroutineContext의 구성 요소이고 자식 코루틴을 만드나 새로운 Scope을 만들며 자식 코투린을 만드나 결과적으로는 동일합니다.

저 역시도 CoroutineScope 은 코루틴을 사용하지 않는 환경에서 코루틴을 사용하는 환경을 넘어갈 때만 명시적으로 사용해본 경험이 있습니다. 🙂

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

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. drrg9211님.

코루틴의 스코프와 디스패처 설정에 관한 질문을 주셨네요. 코루틴은 Kotlin에서 비동기 코드 작성을 쉽게 해주는 기법으로, 스코프를 새로 만든다는 것은 여러 측면에서 유연하게 활용될 수 있는데요. 다음 링크들은 코루틴 스코프와 관련된 질문에 대한 유사한 답변입니다.

  1. CoroutineScope 와 withContext 의 차이를 잘 모르겠습니다.
    이 질문은 코루틴의 스코프와 컨텍스트 이용 시 어떤 차이가 있는지를 설명합니다. 특히, CoroutineScopewithContext의 역할과 사용 예에 대해 설명하고 있어, 스코프 사용의 유용성에 대해 조금 더 명확히 이해하시는데 도움이 될 것입니다.

  2. Dispatchers 관련 궁금증입니다.
    이 질문은 Dispatchers와 코루틴 스레드에 대한 의문을 다룹니다. 같은 Dispatcher를 사용하지만 서로 독립적으로 실행되는 이유에 대해 설명하면서 코루틴 스코프의 역할을 이해하는데 도움이 됩니다.

  3. 코루틴의 대한 질문이 있습니다.
    코루틴이 어떤 순서로 동작하는지, 스코프가 어떻게 영향을 미치는지를 예제로 설명합니다.

요약해서 말씀드리면:
- 새로운 코루틴 스코프: 코루틴 스코프를 새로 만들게 되면, 해당 코루틴이 독립적으로 관리되며 부모 코루틴에 책임을 지지 않습니다. 이로 인해 더 유연하게 예외를 처리할 수 있고, 각각의 코루틴이 독립적인 라이프사이클을 유지할 수 있으며, 더 나은 구조화된 동시성을 제공합니다.

  • 동작의 차이: 부모 코루틴 내에서 새로운 스코프를 선언하면, 그 스코프 내에서 실행되는 각 코루틴은 부모 코루틴으로부터 독립적으로 예외 처리가 되며 서로의 영향을 받지 않습니다. 스코프를 통해 보다 명확한 자원 관리를 할 수 있고, 특정 작업의 범위를 제한하여 코드의 명확성을 높일 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

drrg9211님의 프로필 이미지

작성한 질문수

질문하기