1. 일시 중단 함수(Suspending Function)란?
- 일시 중단 함수는 코틀린 코루틴의 핵심 구성 요소로,
suspend
키워드로 선언된 함수입니다. - 이 함수들은 실행 중간에 일시 중단되었다가 나중에 다시 재개될 수 있는 특별한 함수입니다.
- 일반 함수와 달리, 실행을 멈추고 스레드를 차단하지 않고 반환할 수 있어 비동기 프로그래밍에 이상적입니다.
기본 구문
suspend fun doSomething() {
// 시간이 걸리는 작업
}
1.1 일시 중단 함수와 일반 함수의 차이
- 일반 함수는 실행이 시작되면 완료될 때까지 해당 스레드를 독점적으로 사용합니다.
- 즉, 함수가 긴 작업을 수행하는 경우 그 스레드는 다른 일을 할 수 없습니다.
- 일시 중단 함수는 특정 지점(suspend 지점)에서 실행을 일시적으로 멈추고, 사용하던 스레드를 반환할 수 있습니다.
- 이 스레드는 다른 작업을 처리하다가, 중단된 작업이 계속될 준비가 되면 같은 스레드나 다른 스레드에서 작업을 재개합니다.
- 일시 중단 함수는 반드시 코루틴 스코프 내부나 다른 일시 중단 함수 안에서만 호출할 수 있습니다.
- 일반 함수에서는 직접 호출할 수 없습니다.
- 컴파일러는 일시 중단 함수를 '상태 머신'으로 변환합니다.