본문 바로가기
공부/코틀린코루틴:딥다이브(마르친 모스카와)

6장 - 코루틴 빌더

by 띵커베르 2024. 1. 29.
728x90
  • launch 빌더
    • launch 빌더는 새로운 코루틴을 시작하고, 결과를 반환하지 않습니다(Unit을 반환).
    • 주로 병렬 작업을 수행할 때 사용하며, 작업이 완료될 때까지 기다리지 않습니다.
    • launch로 시작된 코루틴은 부모 코루틴의 생명주기에 연결되어 부모가 취소되면 자식도 취소됩니다.
  • runBlocking 빌더
    • runBlocking은 현재 스레드를 블록하고 코루틴이 완료될 때까지 기다립니다.
    • 주로 테스트나 메인 함수에서 코루틴 코드를 실행하기 위해 사용됩니다.
    • runBlocking 내부에서는 다른 코루틴을 시작할 수 있으며, 내부 코루틴이 모두 완료될 때까지 기다립니다.
  • async 빌더
    • async 빌더는 코루틴을 시작하고 Deferred 타입의 결과를 반환합니다.
    • 반환된 Deferred 객체를 통해 나중에 결과값을 받을 수 있으며, await 함수를 호출하여 결과값을 기다릴 수 있습니다.
    • 주로 결과 값을 반환하는 병렬 작업에 사용됩니다.
  • coroutineScope
    • 코루틴 스코프의 인스턴스를 생성하여 코루틴을 관리할 수 있습니다.
    • CoroutineScope를 사용하면 코루틴의 생명주기를 해당 스코프의 생명주기에 연결할 수 있습니다. 즉, 스코프가 취소되면 스코프 내의 모든 코루틴도 취소됩니다.
    • 사용자가 직접 스코프를 관리하고 싶을 때 사용합니다.
    •  
  • GlobalScope
  • 애플리케이션의 생명주기와 동일한 글로벌 스코프를 제공합니다.
  • GlobalScope로 시작된 코루틴은 애플리케이션 전체에서 실행되며, 별도로 취소하지 않는 이상 애플리케이션이 종료될 때까지 계속 실행됩니다.
  • 메모리 누수의 위험이 있으므로, 주의해서 사용해야 합니다.
  • 코루틴 스코프의 선택은 코루틴의 생명주기와 애플리케이션의 구조에 따라 달라집니다. 일반적으로 GlobalScope의 사용은 권장되지 않으며, 가능하면 CoroutineScope를 사용하여 명확한 생명주기 관리와 자원 정리를 수행하는 것이 좋습니다.
728x90

댓글