본문 바로가기

Language4

[Kotlin] 동시성(Concurrency) 프로그래밍 #1 : 스레드 & 코루틴 [Kotlin] 동시성(Concurrency) 프로그래밍 #1 : 스레드 & 코루틴 안드로이드 애플리케이션과 같은 응용 프로그램들을 개발하다 보면 비즈니스 로직을 짤 때 스레드가 굉장히 많이 쓰이곤 한다. 특히 구글이 코틀린을 안드로이드의 메인 언어로 채택한 이후, 코틀린은 안드로이드 진영에서 이제 선택이 아닌 필수가 되었다. 그러므로 코틀린에서 어떻게 스레드를 다루고, 동시성 프로그래밍은 어떻게 하는지 정리해보도록 하겠다. 1. 프로세스와 스레드의 기본 개념 2. Kotlin에서 스레드와 코루틴 3. 코루틴의 우수성 프로세스와 스레드의 기본 개념 프로세스(Process) 프로세스(Process)는 보통 한 프로그램(Program)의 커다란 하나의 태스크(Task)를 말한다. 프로그램이 하나의 프로세스로.. 2022. 5. 26.
[Kotlin] 코루틴 (Coroutine) #2 - 기본기 2 [Kotlin] 코루틴 (Coroutine) #2 - 기본기 2 첫 번째 코루틴 포스트에서 코루틴 빌더 중 launch만 살펴보았다. launch에 대한 더 자세한 내용과 또다른 빌더인 async를 알아보고 루틴의 작업(Job), 그리고 코루틴의 문맥에 대해 알아보겠다. 복습 1. 코루틴 스코프 : 루틴 작업이 정의되는 코드 영역 ex ) GlobalScope, CoroutineScope 2. 코루틴 빌더 : 코루틴 스코프를 생성하는 빌더 ex ) launch, async, runBlocking 이 포스트에서 공부할 것 1. 코루틴 빌더 : async 2. 작업(Job) 3. 코루틴 빌더 매개변수 코루틴 빌더 : async async는 launch 처럼 코루틴 스코프를 생성하는 코루틴 빌더이다. laun.. 2022. 2. 24.
[Kotlin] 스코프 함수(Scope Functions) #1 [Kotlin] 스코프 함수(Scope Functions) #1 코틀린 표준함수 중에는 리팩토링 또는 자원 낭비를 방지할 수 있도록 돕는 스코프 함수 몇 가지가 있다. 이 함수들은 확장함수로 구현된 함수로 람다식을 이용해 접근하는 것이 일반적이다. 이 함수들의 가장 큰 목적은 블록 내의 코드를 각 객체의 문맥(Context) 내에서 실행하도록 한다. 스코프 함수는 크게 5가지가 있다. 여기서 let, run, apply, with는 제네릭 확장함수 형태이므로 어디서든 적용이 가능하다. let : 주로 Null 검사 생략 용도 주로 해당 객체가 Null이 아니면 어떠한 코드 블록을 실행하고, Null이면 실행하지 않도록 구현할 때 사용한다. 람다의 매개변수는 호출한 객체 자신이며 it으로 참조 가능하다. .. 2022. 1. 17.
[Kotlin] 코루틴 (Coroutine) #1 - 기본기 1 [Kotlin] 코루틴 (Coroutine) #1 - 기본기 1 개념 코루틴은 동시성 프로그래밍을 위해 탄생하였으며, 일명 '루틴(Routine)' 이라고 불리는 논블로킹(Non-Blocking) 작업(Job)들을 정의한 뒤, 이것들을 조화롭게 활용하여 멀티태스킹을 수행하는 것을 말한다. 그래서 여러 루틴들의 협력한다하여 코(Co)루틴이다. (코틀린의 'Ko'도 아니고, 코틀린만의 개념도 아니다!) 논블로킹(Non-Blocking)은 현재 작업을 수행중인 메인스레드를 중단(Blocking)하지 않고, 백그라운드에서 작업을 수행하여 현재 스레드를 종료하지 않도록하는 비동기적 작업 수행을 말하는데, Java 에서는 쓰레드(Thread, Runnable)을 통해 이러한 작업 구현이 가능했다. 그러나 이런 비동.. 2022. 1. 10.