질문&답변
coroutineScope 관련 질문 및 실제 사용 사례에 대한 질문
안녕하세요. 대신 답변해드립니다!! coroutineScope 는 주어진 블록과 모든 자식 코루틴이 끝날때까지 대기하는 함수입니다. 여러 코루틴 스코프를 구조화하고 관리하기 위해 사용됩니다. suspend함수는 코루틴이 아니기 때문에 빌더함수를 통해 동시성을 관리해야 합니다. 중단지점은 코루틴이 일시 중단되고 다른 코루틴이 해당 스레드에서 실행될 수 있는 지점입니다. 중단 지점 자체는 동시성을 지원하지 않으며, 동시성은 async, launch, 또는 Dispatchers 와 같은 도구에 의해 관리됩니다. launch 는 코루틴 단일 작업 , coroutineScope 는 동시 작업의 묶음을 관리하는 상위 추상화 라고 볼 수 있습니다. suspend fun callAbByCoroutineScope(): String = coroutineScope { val a = async { callA() } val b = async { callB() } a.await() + b.await() // AB 결과 반환 } suspend fun callDWithDependencies(): String = coroutineScope { val abDeferred = async { callAbByCoroutineScope() } val cDeferred = async { callC() } callD(abDeferred.await(), cDeferred.await()) // D 호출 } AB호출을 추상화 하려면 callAbByCorouineScope()로 묶고 D호출을 추상화하려면 해당 3줄을 coroutineScope()로 묶는거죠 만약 사용하는 API가 논블로킹 방식 (WebClient)이 아니라 블로킹 방식 (RestTemplate)이라면, 호출 중 해당 작업 스레드가 대기 상태로 블로킹 됩니다.
- 좋아요수
- 1
- 댓글수
- 3
- 조회수
- 276





