- 스레드 기반 콜백 구조는 코드 복잡성, 병렬 처리의 어려움, 취소 구현의 어려움 등의 문제점을 가진다. 😥
- 스레드를 과도하게 생성하면 비용이 많이 들고, 취소 시 자원 관리가 복잡하며, 계층 구조가 없어 자식 스레드 관리가 어렵다. 😫
- 코루틴은 코드 간결성, 쉬운 취소, 저렴한 비용, 구조화된 동시성 등의 장점을 제공하여 스레드의 대안으로 부상했다. 😎
- 코루틴은 OS 레벨에서 동작하는 것이 아닌, 코틀린 코드로 구현되며, 일시 중단 메커니즘을 통해 스레드를 효율적으로 관리한다. 🤩
- 스레드는 OS가 관리하는 실행 단위로, 컨텍스트 스위칭 비용이 높고, 고정된 크기의 메모리(스택)를 사용한다. 🤯
- 코루틴은 컨텍스트 스위칭 비용이 적고, 필요한 만큼의 메모리(힙)를 사용하며, IO 바운드 작업에 적합하다. 🤓
- 스레드는 병렬성에 적합하며, 코루틴은 동시성에 적합하다. 🤔
- 코루틴은 스레드와 달리 OS에 직접 접근하지 않고, 스레드 위에서 실행되는 일반 코틀린 코드이다. 😮
- 코루틴의 일시 중단은 현재 상태를 저장하고 복원하는 방식으로 구현되며, Continuation Passing Style을 사용한다. 😮
- 스레드는 선점형 스케줄링을 사용하는 반면, 코루틴은 협력적 스케줄링을 사용한다. 😮