코루틴

· Skils/Kotlin
이전 글[코루틴의 정석] - 예외 전파 제한(Chapter 8-1)[코루틴의 정석] 구조화된 동시성(Chapter7)[코루틴의 정석] async와 Deferred(Chapter5)[코루틴의 정석] 코루틴 빌더와 Job(Chapter4-2)[코루틴의 정석] 코루틴 빌더와 Job(Chapter4-1)[코루틴의 정석] CoroutineDispatcher(Chapter3)[코루틴의 정석] 스레드 기반 작업의 한계와 코루틴의 등장(Chapter1) 개요이전 글에서는 코루틴이 어떻게 예외를 전파하고, 또 그 예외 전파를 어떻게 방지할 수 있는지에 대해 적어봤습니다.이번 글에서는 이렇게 전파된 에러를 어떻게 처리하는지, 그리고 코루틴은 어떠한 에러 처리 방법을 제공하는지 적어보겠습니다.  CoroutineExcept..
· Skils/Kotlin
이전 글[코루틴의 정석] 코루틴 빌더와 Job(Chapter4-2)[코루틴의 정석] 코루틴 빌더와 Job(Chapter4-1)[코루틴의 정석] CoroutineDispatcher(Chapter3)[코루틴의 정석] 스레드 기반 작업의 한계와 코루틴의 등장(Chapter1)개요launch 코루틴 빌더를 통해 생성되는 코루틴은 기본적으로 작업의 결과를 반환하지 않는다.코루틴으로부터 결과를 수신해야 하는 상황이 생길 것이다. 예를 들어 네트워크 통신 이후, 응답을 받아 처리해야 할 경우 네트워크 통신을 실행하는 코루틴으로부터 결과를 수신받아야 한다. 코루틴 라이브러리는 비동기 작업으로부터 결과를 수신해야 하는 경우를 위해 async 코루틴 빌더를 통해 코루틴으로부터 결괏값을 수신받을 수 있도록 한다.launch..
· Skils/Kotlin
이전 글[코루틴의 정석] CoroutineDispatcher(Chapter3)[코루틴의 정석] 스레드 기반 작업의 한계와 코루틴의 등장(Chapter1)코루틴 빌더코루틴을 생성하는 데 사용하는 함수, 빌더 함수를 호출하면 새로운 코루틴이 생성된다.ex): runBlocking, launch모든 코루틴 빌더 함수는 코루틴을 만들고 코루틴을 추상화한 Job 객체를 생성한다. launch 함수 또한 코루틴 빌더이므로, 다음과 같이 launch 함수를 호출하면 코루틴이 만들어지고, Job 객체가 생성돼 반환된다. 반환된 Job 객체는 코루틴의 상태를 추적하고 제어하는 데 사용된다.join을 사용한 코루틴 순차 처리코루틴 간에 순차 처리가 필요한 경우는 어떤 경우일까?대표적인 예로는데이터베이스 작업을 순차적으로 ..
· Skils/Kotlin
이전 글[코루틴의 정석] 스레드 기반 작업의 한계와 코루틴의 등장(Chapter1) CoroutineDispatcher란 무엇인가?디스패처는 dispatch와 -er의 합성어로 dispatch의 보내다는 뜻에 -er이 붙어 무언가를 보내는 주체라는 뜻이다.즉 CoroutineDispatcher는 코루틴을 보내는 주체라는 뜻이다. CoroutineDispatcher 객체는 스레드로 코루틴을 보낸다.코루틴은 일시 중단이 가능한 작업이기 때문에 스레드가 있어야 실행될 수 있으며, CoroutineDispatcher는 코루틴을 스레드로 보내 실행시키는 역할을 한다.CoroutineDispatcher는 코루틴을 스레드로 보내는 데 사용할 수 있는 스레드나 스레드풀을 가지며, 코루틴을 실행 요청한 스레드에서 코루틴..
개요 프로젝트에서 코루틴을 많이 사용했지만, 코루틴에 대해서 정확하게 알지 못하고 기존 코드를 그대로 사용한 적이 많았다. 공식문서에서 비동기 작업으로 코루틴을 권장하고, 애플리케이션 특성상 비동기 작업이 중요한 만큼 한번 자세히 다룰 필요성이 있다고 느꼈다. 코루틴에 대해서 설명하기전에 비동기 작업이 왜 중요한지, 어떤 것인지 알고 넘어갈 필요성이 있다. 여기선 동시성과 병렬성이라는 단어의 차이를 알 필요성이 있다. 동시성 vs 병렬성 동시성 둘 이상의 작업이 동시에 실행되는것을 의미한다. 여기서 말하는 동시는 정확하게 같은 시간에 실행되는 것이 아닌 동시에 실행하는 것처럼 보인다는 의미이다. 예를 들어 N명의 사람이 하나의 큰 작업을 하는데, 동시에 작업을 하는것이 아닌 1명씩 돌아가면서 작업을 하는..
· Skils/Kotlin
코루틴 비동기적으로 실행되는 코드를 간소화하기 위해 Android에서 사용할 수 있는 동시 실행 설계 패턴입니다. 비동기 vs 동기 예를 들면, 요리를 할 때 동생 같은 요리 초보는 프라이팬을 하나만 사용하면서 요리를 한다. 이러한 방식을 동기라고 한다. 나같은 요리 고수는 프라이팬을 여러 개 사용하면서, 칼질도 하는 등 여러 작업을 동시에 한다. 이러한 방식을 비동기라고 한다. 그렇다면 비동기가 왜 필요할까? 만약 내가 버튼을 누름과 동시에 데이터베이스에서 접근해서 데이터베이스를 읽어 들이는데, 그 데이터베이스를 기다리는 동안 화면 UI는 데이터베이스에서 정보가 들어오지 않았기에, 계속 기다려야 하고, 그렇게 되면 사용자 입장에서는 텅 빈 화면을 바라봐야 한다. 이러한 상황이 발생되면 사용자도 불편하고..
재한
'코루틴' 태그의 글 목록