[Tistory] WithContext 개념 (feat Coroutine, Dispatcher)

원글 페이지 : 바로가기

WithContext ? 코루틴 라이브러리에서 제공하는 함수, 코루틴의 실행 컨텍스트(쓰레드 or 디스패처)를 바꿀 때 사용 현재 코루틴이 실행 중인 컨텍스트에서 다른 컨텍스트로 잠깐 전환해 중괄호 블록 안의 코드를 실행할 수 있다. 시간이 오래 걸리는 작업을 메인 쓰레드에서 분리해 UI를 차단하지 않게 하거나, 다른 쓰레드 or 디스패처에서 실행해야 하는 코드가 있을 경우 사용 WithContext의 장점 가볍기때문에 컨텍스트를 쉽게 바꿀 수 있다. 즉 디스패처를 쉽게 전환한다는 걸 의미 Coroutines ? 코틀린에서 비동기 처리를 위한 프로그래밍 방식 Coroutines의 특징 1. 협력형 멀티 태스킹 Co + Routine, 즉 협력하는 함수다. 이 함수에 진입할 수 있는 진입점도 여러개고, 함수를 빠져나갈 수 있는 탈출점도 여러개다. 즉, 코루틴 함수는 꼭 return문이나 마지막 닫는 괄호를 만나지 않더라도 언제든지 중간에 나갈 수 있고, 언제든지 다시 나갔던 그 지점으로 들어올 수 있다. 2. 동시성 프로그래밍 지원 함수를 중간에 빠져나왔다가, 다른 함수에 진입하고, 다시 원점으로 돌아와 멈추었던 부분부터 다시 시작하는 이 특성은 동시성 프로그래밍을 가능하게 한다. 동시성 프로그래밍이란 오른쪽 손에만 펜을 쥐고서 왼쪽 도화지에 일부를 그리고, 오른쪽 도화지에 가서 또 그리고 … 이 행위를 아주 빨리 반복하는 것이다. 병렬성 프로그래밍은 실제로 양쪽 손에 펜을 하나씩 들고서 왼쪽과 오른쪽에 실제로 동시에 그리는 것이다. 3. 비동기 처리를 쉽게 도와줌 기존 비동기 처리 방식 (콜백, Rx)에 비해 코드가 간결하고 가독성이 높아진다. Dispatcher? Dispatcher – 한국어로 ‘보내다’라는 뜻으로, Thread에 Coroutine을 보낸다. Coroutine – Thread Pool을 만들고, Dispatcher를 통해 코루튼일 배분 즉 Coroutine을 만든 다음, 해당 코루틴을 Dispatcher에 전송하면 Dispatcher는 자신이 관리하는 Thread Pool 내의 Thread의 부하 상황에 맞춰 Coroutine을 배분한다. 안드로이드의 Dispatcher? Dispatchers.Main – UI와 상호작용하는 작업을 실행하기 위해서만 사용해야 한다. Dispatchers.IO – 디스크, 네트워크 I/O 작업을 실행하는데 최적화 Dispatchers.Default – CPU를 많이 사용하는 작업을 기본 스레드 외부에서 실행하도록 최적화, ex) 정렬, JSON 파싱 [출처] https://onlyfor-me-blog.tistory.com/724 [Android] withContext란? 코루틴 예제들을 찾아보다 보면 가끔 withContext라는 걸 볼 수 있다. 코틀린 공식문서에서 설명하는 withContext는 아래와 같다. https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/with onlyfor-me-blog.tistory.com https://wooooooak.github.io/kotlin/2019/08/25/%EC%BD%94%ED%8B%80%EB%A6%B0-%EC%BD%94%EB%A3%A8%ED%8B%B4-%EA%B0%9C%EB%85%90-%EC%9D%B5%ED%9E%88%EA%B8%B0/ 코틀린 코루틴(coroutine) 개념 익히기 · 쾌락코딩 코틀린 코루틴(coroutine) 개념 익히기 25 Aug 2019 | coroutine study 앞서 코루틴을 이해하기 위한 두 번의 발악이 있었지만, 이번에는 더 원론적인 코루틴에 대해서 알아보려 한다. 코루틴의 개념이 정확 wooooooak.github.io https://kotlinworld.com/141 [Coroutine] 3. Coroutine의 Dispatcher 란 무엇인가? Coroutine을 공부하면서 Dispatcher에 대해 상세히 설명된 글이 없어서 이 글을 작성하게 되었다. 많은 사람들에게 도움이 되길 바란다. Dispatcher 코루틴을 시작하게 되면, Dispatcher란 단어를 가장 먼저 kotlinworld.com

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다