suspend
·
개념 저장소/coroutine
1. suspend 함수란suspend 함수는 코루틴 내에서만 호출할 수 있는 특수한 함수이다.이 함수는 실행 중 특정 시점에서 중단되었다가 필요할 때 다시 실행을 재개할 수 있는 특성을 가진다.2. 특징중단 가능: suspend 함수는 특정 조건에서 중단될 수 있으며 이후 다시 재개된다.코루틴 컨텍스트: suspend 함수는 호출될 때 코루틴의 컨텍스트에서 실행된다.스레드가 항상 돌아오는 것은 아님: 중단된 suspend 함수가 다시 실행될 때 같은 스레드가 아니라 다른 스레드에서 실행될 수 있다. 코루틴 디스패처의 정책에 따라 결정된다.직관적인 비동기 코드 작성: 콜백 지옥을 피하고, 비동기 코드를 동기 코드처럼 작성할 수 있다.suspend fun example(st: String) { pri..
구조화된 동시성
·
개념 저장소/coroutine
1. 코루틴 실행환경 복사코루틴 컨텍스트의 속성 복사 덮어쓰기: 코루틴은 기본적으로 부모의 컨텍스트를 복사해서 새로운 컨택스트를 생성한다. 특정 속성은 명시적으로 덮어쓸 수 있다.runBlocking { launch { println("부모 컨텍스트 상속") } launch(Dispatchers.Default) { println("디스패처 덮어쓰기") }}각 코루틴은 독립적인 Job을 생성한다. launch나 async와 같은 코루틴 빌더는 항상 새로운 Job을 생성하고 부모의 컨텍스트를 상속받아 구조화된 동작을 유지할 수 있다. 이렇게 생성된 각 Job은 독립적으로 실행되지만 부모-자식 관계를 통해 라이프사이클이 관리 된다2. 취소전파부모 코루틴이 취소되면..
Coroutine Context
·
개념 저장소/coroutine
1. Coroutine Context란코루틴이 실행될 때 이를 관리하고 제어하는 여러 요소들이 결합된 객체이다.2. 구성 요소여러 키-값 쌍으로 이루어진 데이터 구조이다.Job코루틴의 생명 주기를 관리한다.Job은 부모-자식 관계를 형성하여 구조적 동시성을 구현하는 데 중요한 역할을 한다.구조적 동시성이란 부모 코루틴이 자식 코루틴의 생명 주기를 관리하는 구조를 의미한다.부모 코루틴이 취소되면 모든 자식 코루틴도 자동으로 취소되며 자식 코루틴이 완료되기 전에는 부모 코루틴이 종료되지 않는다.Dispatcher코루틴이 실행될 스레드나 스레드 풀을 지정한다.CoroutineName코루틴에 이름을 부여CoroutineExceptionHandler코루틴 내부에서 발생한 예외를 처리하기 위한 핸들러3. Corou..
runBlocking
·
개념 저장소/coroutine
1. runblocking이란runBlocking은 비동기 코드를 동기적인 환경으로 가져오는 역할을 한다. launch, async, produce는 비동기 코드를 동기 코드처럼 사용할 수 있게 해주는 도구다. 반면 runBlocking은 비동기 코드를 완전히 동기 코드로 변환해주는 특별한 도구다. 예를 들어, 1초 동안 대기하는 delay(1000)이라는 비동기 함수가 있다. 이 함수는 코루틴 안에서만 사용 가능하기 때문에 동기 코드 환경에서는 실행할 수 없다. 하지만 runBlocking으로 delay(1000)을 감싸면 이 비동기 함수는 동기 코드처럼 실행된다. 이렇게 runBlocking은 비동기 작업을 동기적으로 사용할 수 있게 해준다.2. 예제import kotlinx.coroutines.*f..