1. 코루틴의 개념
1-1. 비동기 프로그래밍의 필요성
비동기 프로그래밍은 다음과 같은 이유로 필요하다.
- 효율성 : I/O 작업 동안 CPU가 대기하지 않고 다른 작업을 수행할 수 있음
- 사용자 경험 개선 : UI 프로그램에 비동기를 사용하면 화면이 멈추지 않고 유연하게 작동
- 리소스 관리 최적화 : 스레드를 많이 생성하지 않고도 많은 작업 처리 가능
1-2 코루틴이란?
코루틴이란 협력적 멀티태스킹
을 가능하게 하는 경량 스레드이다. 주요 특징은 다음과 같다.
Non-Blocking
: 코루틴은 어떤 작업 중에도 다른 코루틴을 실행할 수 있도록 양보 가능
Suspend/Resume
: 중단(suspend)된 작업을 저장하고 나중에 이어서 실행 가능
코루틴 vs 스레드
항목 |
코루틴 |
스레드 |
생성 비용 |
경량 (적은 리소스 소모) |
무겁다 (스택 메모리 필요) |
동시성 |
협력적 멀티태스킹 |
선점형 멀티태스킹 |
개수 제한 |
수천 ~ 수백만 개 가능 |
개수 제한적 |
1-3 코루틴의 주요 특징
- Suspend Function
- suspend 키워드로 정의된 함수는 호출 시 바로 실행되지 않고 중단점으로 작동
- e.g.) 네트워크 호출, 디스크 I/O
- 경량성
- 코루틴은 한 개의 스레드 내에서 다수의 작업을 효율적으로 처리 가능
- 동시성 제공
- 비차단 방식으로 작업을 실행하며, 동시 작업을 쉽게 표현 가능