💡 중단 함수를 사용하는 코루틴에서 취소를 통해서 자원 낭비와 메모리 누수를 줄일 수 있는 방법에 대하여 학습하였습니다.cancellation중단 함수를 사용하는 몇몇 클래스와 라이브러리는 항상 취소를 지원합니다.단순히 스레드를 죽이면, 연결을 닫고 자원을 해제하는 기회가 없기 때문에 최악의 취소 방법이 됩니다.개발자들이 상태가 액티브한지 확인하지 않아도 되고, 간단하고 안전한 방식으로 취소할 수 있도록 코루틴은 이를 지원하고 있습니다.기본적인 취소Job 인터페이스는 cancel 메서드를 통해서 취소를 지원합니다.cancel()이를 호출한 코루틴은 첫 번째 중단점에서 잡을 끝냅니다.잡이 자식을 가지고 있따면 그들 또한 취소되며, 부모는 영향을 받지 않습니다.잡이 취소되면, 취소된 잡은 새로운 코루틴의 ..
💡 구조화된 동시성에 이어서 Job과 child 코루틴의 특징에 대하여 학습하였습니다.Coroutine Job?Job은 코루틴을 취소하고, 상태를 파악하는 등 다양하게 사용될 수 있는 컨텍스트입니다.수명주기를 가지며 인터페이스 입니다.구체적인 사용법과 상태를 가지고 있다는 점에서 추상 클래스처럼 다룰 수 있습니다.Coroutine Job 상태 도식도아래와 같이 6가지 상태와 도식표로 나타낼 수 있습니다.실제 코드에서는 toString을 활용해 잡의 상태를 볼 수 있습니다.Active잡이 실행되고 코루틴이 잡을 수행합니다.잡이 코루틴 빌더에 의해 생성되었을 때, 본체가 실행되는 상태이며 자식 코루틴을 시작할 수 있습니다.New대부분 코루틴은 Active 상태로 시작되지만, 지연 시작되는 코루틴은 New ..
💡 코루틴 라이브러리를 활용하는 kotlin.coroutines에서 사용하는 다양한 코루틴 빌더에 대하여 학습하였습니다.코루틴 빌더중단 함수는 컨티뉴에이션 객체를 다른 함수로 전달해야 합니다.즉 중단 함수 → 일반 함수 호출은 가능하지만, 일반 함수 → 중단 함수 호출은 불가능합니다.모든 중단 함수는 또 다른 중단 함수에 의해 호출되어야 하며, 이는 앞서 호출한 중단 함수 또한 마찬가지입니다.중단 함수를 연속으로 호출하면 시작되는 지점이 반드시 있습니다.코루틴 빌더(coroutine builder)가 그 역할을 하며, 일반 함수와 중단 가능한 세계를 연결시키는 다리 역할을 합니다.launchrunBlockingasynclaunch 빌더launch는 thread 함수를 호출하여 새로운 스레드를 시작하는 ..
💡 코틀린 자체 언어의 코루틴(지원)과 코틀린 코루틴 라이브러리(라이브러리)의 차이에 대하여 학습하였습니다. 코루틴 : 언어 차원에서 지원 vs 라이브러리코루틴은 두 가지 개념으로 생각할 수 있습니다.코틀린 언어에서 자체적으로 지원하는 부분코틀린 코루틴 라이브러리둘은 같은 개념으로 보이지만 큰 차이가 있습니다.코틀린 언어에서 지원코틀린 언어에서 자체적으로 지원하는 부분은 아래와 같은 특징이 있습니다.컴파일러의 지원, 코틀린 기본 라이브러리의 요소자유도를 보장하기 위해 코루틴을 최소한으로 지원기본 라이브러리에 포함되어 있으며, kotlin.coroutines 패키지에 포함되어 있음직접 사용하기는 어려움모든 동시성 스타일 허용코틀린 코루틴 라이브러리kotlinx.coroutines 라이브러리를 추가하는 방..
💡 실제 코루틴 내부가 어떻게 작동하는지 이해하기 위한 학습입니다. 코루틴의 실제 구현?중단 함수는 함수가 시작할 때와 중단 함수가 호출되었을 때 상태를 가진다는 점에서 상태 머신(state machine)과 비슷합니다.*state machine : 하나의 상태만을 가지는 추상 기계컨티뉴에이션(continuation) 객체는 상태를 나타내는 숫자와 로컬 데이터를 가지고 있습니다.함수의 컨티뉴에이션 객체가 이 함수를 부르는 다른 함수의 컨티뉴에이션 객체를 장식(Decorate)이라고 합니다.컨티뉴에이션 객체는 실행을 재개하거나 재개된 함수를 완료할 때 사용되는 콜 스택으로 사용됩니다.컨티뉴에이션 전달 방식 (CPS)continuation-passing style프로그램의 흐름을 제어하기 위해 contin..
💡 코루틴에서 중단이 어떻게 동작하는지 학습하였습니다. 중단은 어떻게 작동할까?중단 함수는 코틀린 코루틴의 핵심이 됩니다.코루틴을 중단한다는 것은 실행을 중간에 멈추는 것을 의미합니다.체크포인트에 게임을 저장하고 다른 게임을 동작하는 것과 같으며, 사용자와 컴퓨터는 각각 다른 일에 집중할 수 있습니다.게임을 재개할 경우 저장한 체크포인터에서 실행한다면 이전에 종료했던 순간부터 게임을 즐길 수 있습니다.코루틴은 중단되었을 때 Continuation 객체를 반환합니다.스레드와의 차이점은?스레드는 저장이 불가능하고, 멈추는 것만 가능합니다.코루틴이 Continuation 객체를 반환하여 멈췄던 곳에서 다시 코루틴을 시작하지만 스레드는 저장이 불가능합니다.코루틴은 또한 중단했을 때 어떤 자원도 사용하지 않으며..