Kotlin

[kotlin] Coroutine - 개념 이해

현인 2022. 12. 1. 11:09

Coroutine 이란 ?

코루틴을 알기 전에 프로세스와 스레드를 조금 이해해보도록 하자,

 

프로세스는 메모리 공간을 할당 받아 실행 중인 프로그램을 뜻하고, 스레드는 이 실행 중인 프로그램 안에서 작업을 실행하는 여러 단위이다. 즉 실행 중인 프로그램 안에서 실행되는 작업의 단위가 스레드인 것인데, 이 스레드는 경량 프로세스라고도 불린다.

 

하지만 스레드는 문맥 교환(Context Switching) 시에 많은 비용이 소요되어 자원을 낭비하는데, 이를 해결하기 위해 더욱 업그레이드 한 것이 경량 스레드라 불리우는 'Coroutine' 이다.

 

코루틴의 특징으로는

  • 동시성 프로그래밍
  • 협력형 멀티태스킹

 

협력형 멀티태스킹

멀티 태스킹 : 하나의 CPU 코어로 여러 개의 작업을 하는 것을 의미한다.

협력형 멀티 태스킹은 이 여러 개의 작업들끼리 서로 협력해서 멀티 태스킹을 수행하는 것을 의미한다. 다시 말해 각 태스크끼리 필요한 값이 있을 때 진행 중이던 작업을 중단하고 필요한 값을 얻기 위한 작업을 실행하고 결과를 반환할 때까지 기다리고 이 기다리는 동안 또 다른 작업을 실행하여 자원이 낭비 되지 않도록 하는 것이다.

 

동시성 프로그래밍

동시성 : 동시에 작업을 처리하는 것

"동시"성이니 당연한 말일 순 있겠지만 동시성은 동시에 작업하는 것을 의미한다. 동시성 프로그래밍은 한 사람이 여러 작업을 일정 규칙을 두고 처리하는 것을 의미한다. 동시성과 비슷한 병렬성은 동시에 여러 사람이 여러 작업을 동시에 처리하는 것이다.

 

예를 들어, 국어, 영어, 수학, 과학 과제가 있을 때 이 과제가 총 10페이지가 있을 때, 이 과제를 학생 한 명이 한 페이지씩 번갈아가며 과제를 수행하는 것이 동시성이고, 병렬성은 학생 네 명이 국영수과를 하나씩 맡아서 동시에 작업을 하는 것이 병렬성 프로그래밍이다.