조세영님의 코틀린 코루틴의 정석을 읽고 코루틴에 대해서 깊게 알아보는 시간을 가지려고 한다.면접에서 "코루틴이 뭐야?" 라고 물어봤을 때 나는 "경량 쓰레드"입니다. 라고만 대답하고 정확하게 말하지 못했다. 개발할 때 매일 쓰는 코루틴을 제대로 말하지 못한 사실이 부끄
Dispatch는 dispatch와 -er의 합성어로 무언가를 보내는 주체이다. 그렇다면 CoroutineDispatcher는 코루틴을 보내는 주체? 라고 생각해볼 수 있다. > CoroutineDispatcher는 코루틴을 스레드로 보내는데 사용할 수 있는 스레드나
코루틴 빌더는 코루틴을 생성하는 함수이다. 대표적인 예로 runBlacking, launch 등이 존재한다. 이러한 코루틴 빌더 함수는 코루틴을 만들고, 코루틴을 추상화한 Job 객체를 생성한다. launch 함수 또한 코루틴 빌더이므로 다음과 같이 launch 함수를
launch 코루틴 빌더를 통해 생성되는 코루틴은 기본적으로 작업 실행 후 결과를 반환하지 않는다. 그러나 네트워크 통신을 실행하고 응답을 받아 처리해야 할 경우 네트워크 통신을 실행하는 코루틴으로부터 결과를 수신받아야 한다. async 코루틴 빌더는 코루틴으로부터
우리는 지금까지 코루틴 빌더 함수 launch, async 를 만들 때 매개변수로 CoroutineDispatcher 또는 CoroutineName 객체를 전달해서 코루틴을 만들었다.어떻게 이런 코드가 가능할까?launch() 함수의 코드 내부를 들여다보면 Corout
구조화된 동시성의 원칙이란 비동기 작업을 구조화함으로써 비동기 프로그래밍을 보다 안정적이고 예측할 수 있게 만드는 원칙이다. 코루틴의 구조화된 동시성의 원칙을 사용해 비동기 작업인 코루틴을 부모-자식 관계로 구조화함으로써 코루틴이 보다 안전하게 관리되고 제어될 수 있도
runBlocking과 launch의 차이를 알고 계시나요? 같은 코루틴 빌더 함수 처럼 보이지만 내부 동작은 전혀 다르게 동작합니다.