분류 전체보기254 [Android] 코루틴(Coroutine)의 구조적 동시성(Structured Concurrency) 구조적 동시성 (Structured Concurrency) 이란?부모 코루틴은 자신의 스코프를 자식에게 전달하고, 자식 코루틴은 해당 스코프에서 호출을 받는다.이러한 부모-자식 간의 관계를 생성하는 것을 structured concurrency라고 한다.부모-자식간의 관계에 대한 상호작용은 다음과 같다.자식 코루틴은 부모 코루틴으로부터 컨텍스트를 상속받는다. (하지만 해당 컨텍스트를 덮어쓰는 것도 가능하다.)부모 코루틴은 자식 코루틴이 모두 완료될 때까지 일시중단된다. (기다린다)부모 코루틴이 cancel되었을 때, 자식 코루틴들도 모두 cancel 된다.자식 코루틴에서 예외가 발생하여 부모 코루틴으로 전파되었을 때, 부모 코루틴 또한 종료된다.단, 다른 coroutine builder들과 다르게 run.. 2024. 11. 9. [Android] 코루틴(Coroutine) Builder에 대한 고찰 - Deep Dive CoroutineBuilderCoroutineBuilder는 CoroutineScope의 확장함수로, 다양한 요구사항에 맞게 개별적인 Coroutine(코루틴)을 만드는 방법입니다.Coroutine Builder에는 여러 종류가 존재합니다. ( launch / async / withContext / runBlocking ) 자세히 살펴보기 전에 각 Builder에 대해 간단히 알아보겠습니다. 1. launch() -> Job 반환결과가 없는 코루틴을 생성하는 빌더입니다. 여기서 결과는 반환인스턴스가 아닌 결과값(Value)을 뜻하며, 반환하는 Job인스턴스는 생성된 해당 코루틴을 제어하는데 사용됩니다.2. async() -> Deferred 반환launch와 다르게 결과를 가지는 코루틴을 생성하는 빌더.. 2024. 11. 9. [Android] 코루틴(Coroutine) Scope에 대한 고찰 - Deep Dive Scope코루틴의 Scope는 코루틴의 수명을 관리하는 역할을 합니다.코루틴은 스코프 내에서만 실행되며, 스코프가 종료되면 그 스코프 내에서 실행된 모든 코루틴도 자동으로 취소됩니다.이는 구조화된 동시성을 구현하는 중요한 개념으로, 비동기 작업이 여러 개 실행되더라도 일정한 흐름 안에서 안전하게 관리될 수 있도록 해줍니다.코루틴은 여러 개의 스코프에서 동작할 수 있으며, 아래와 같이 분류할 수 있습니다. CoroutineScope코루틴이 실행되는 범위로, 코루틴을 실행하고 싶은 Lifecycle에 따라 원하는 Scope를 생성하여 코루틴이 실행될 작업 범위를 지정할 수 있습니다.사용자 지정 CoroutineScope: CoroutineScope(CorountineContext)ex) CoroutineSc.. 2024. 11. 9. [Android] 코루틴(Coroutine)의 Context란 ? 코루틴 컨텍스트(Coroutine Context)란?CoroutineContext는 코루틴을 실행하는 실행 환경을 설정하고 관리하는 인터페이스로,CoroutineContext 객체는 CoroutineDispatcher, CoroutineName, Job 등의 객체를 조합하여 코루틴의 실행 환경을 설정합니다.따라서, CoroutineContext 객체는 코루틴 실행 및 관리의 핵심 역할을 합니다.CoroutineContext는 launch나 async 코루틴 빌더의 파라미터로 설정할 수 있으며, 해당 파라미터에 CoroutineContext를 명시적으로 지정하면 특정 스레드풀로 수행 제한, 코루틴 이름 설정 등을 할 수 있습니다. CoroutineContext 구성 요소CoroutineDispatcher코.. 2024. 11. 9. [Android] 코루틴(Coroutine)의 개념 코루틴(coroutine) 개념앞서 코루틴을 이해하기 위한 두 번의 발악이 있었지만, 이번에는 더 원론적인 코루틴에 대해서 알아보려 한다. 코루틴의 개념이 정확하게 서야 응용도 가능하기에 이번 포스팅으로 개념을 확실하게 알아갔으면 좋겠다.인트로코루틴은 코틀린만의 것이 아니다. 이름이 비슷해서 코틀린의 것이라고 생각할 수 있지만 파이썬, C#, Go, Javascript 등 여러 언어에서 지원하고 있는 개념이다. Javascript를 사용하고 있으면서 async await를 사용하고 있다면 이미 코루틴을 사용해본 경험이 있는것이다. 아무튼 코루틴은 새로운 개념, 새로운 기술이 아니라 프로그래밍이 세상에 나온 초창기 부터 존재하던 개념이다.우리가 코틀린 코루틴을 공부해볼 가치가 있는 이유앱이든 웹이든 비동기.. 2024. 11. 8. [Kotlin] 불변성(Immutable)과 가변성(Mutable) 불변성(Immutability)과 가변성(Mutability)불변성이란 무엇일까?본질적으로 함수형 프로그래밍은 스레드 안전(thread-safe)입니다. 그리고 함수형 프로그래밍에서는 불변성을 중요하게 생각하며, 불변성은 스레드를 안전하게 만드는 데 큰 역할을 합니다. 사전적인 정의로 불변성은 무언가가 변할 수 없다는 것을 의미합니다.(상태를 변경하지 않는 것) 따라서 불변 변수는 변경될 수 없는 변수를 말합니다.주의해야할 점은 불변성을 클래스를 생성하고 모든 변수를 읽기 전용으로 만드는 것 정도로 생각하면 안 됩니다. Clojure, Haskell, F# 등과는 달리 코틀린은 불변성이 강제되는 순수 함수형 프로그래밍 언어가 아닙니다. 코틀린은 함수평 프로그래밍과 객체지향 프로그래밍(OOP) 언어의 조화.. 2024. 11. 7. 이전 1 ··· 6 7 8 9 10 11 12 ··· 43 다음