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)이라면, 호출 중 해당 작업 스레드가 대기 상태로 블로킹됩니다.