본문 바로가기
반응형

분류 전체보기79

코루틴을 사용한 안전한 예외처리 - 3 코틀린은 자바와 다르게 함수형 패러다임을 많이 지원해주고 있지만 완벽하게 함수형프로그래밍을 지원하는 것은 아니다. 함수형 패러다임이라고 하면 여러가지 철학,개념이 있지만 한마디로 하스켈의 방식을 따라 가는 것이라고 생각하면 좋다. 그래서 함수형 프로그래밍을 제대로 경험해보고 싶다면 하스켈을 학습해보라는 말이 있다. https://www.haskell.org/ Haskell Language Statically typed Every expression in Haskell has a type which is determined at compile time. All the types composed together by function application have to match up. If they don'.. 2022. 1. 14.
코루틴을 사용한 안전한 예외처리 - 2 앞의 글에서 이야기했던 두개의 코루틴(A, B)이 실행된다고 할 때 각각 걸리는 시간 A: 1초 B: 2초 A가 먼저 끝나고 B가 그 뒤에 예외가 발생함 B가 실행 중에 A에서 예외가 발생함 예외가 발생하면 어떻게 될까? 코루틴은 어떤 스코프에 있었는지에 따라 취소되거나 그렇지 않는다. 기본은 취소(Cancellation)가 된다. 아래 코루틴을 실행시키면 b가 실행되고 있는 동안 a가 먼저 예외를 발생시키고, 결과적으로 프린트 되는 것은 없다. 취소가 된 것이다. 그리고 main 스레드는 예외가 발생되어 프로그램이 종료된다. suspend fun parallelLaunchException_1() = coroutineScope { launch { // coroutine a delay(100) throw .. 2022. 1. 14.
코루틴을 사용한 안전한 예외처리 - 1 코루틴을 사용한 예외처리는 꽤나 까다롭다. 두개의 코루틴(A, B)이 실행된다고 할 때 아래 상황을 고려할 수 있다. 각각 걸리는 시간 A: 1초 B: 2초 A가 먼저 끝나고 B가 그 뒤에 예외가 발생함 B가 실행 중에 A에서 예외가 발생함 A, B 둘 다 예외가 발생함 A, B 를 실행시키고 있는 부모 코루틴에서 예외가 발생함 A, B 둘 중 하나에서 예외가 발생하였고 main스레드에 의해 runBlocking 안에서 실행되고 있을 때 결론부터 이야기하면 예외처리를 잘 하기 위해서는 국소적으로 try catch를 사용해주는 것이 권장된다. 아래는 CoroutineExceptionHandler에 나오는 docs 내용이다. If you need to handle exception in a specific .. 2022. 1. 14.
코루틴을 사용한 동시성, 병렬처리 - 2 지난 시간에는 코루틴이 무엇인지? launch 를 사용한 동시처리, 병렬처리 그리고 delay, sleep 의 차이를 예를 들어 context, dispatcher 까지 폭넓게 살펴봤다. 코루틴을 사용한 동시성, 병렬처리 - 1 비동기, 논블록킹을 다룰 수 있는 기술은 매우 중요하다. 모바일 웹 화면의 경우 기본은 싱글 스레드로 작동하는데 비동기,논블록킹을 적용하지 않으면 화면의 여러 인터렉션을 동시에 처리할 thisdev.tistory.com 이번에는 비동기 처리 (async) 를 어떻게 하는지 짧게 살펴보도록 하겠다. suspend fun parallelAsync_multiple() = coroutineScope { val a1: Deferred = async { delay(1000) "job1" }.. 2022. 1. 14.
반응형