- 콜백 구조는 코드 복잡성, 병렬 처리의 어려움, 취소 구현의 어려움 등의 문제점을 가진다. 😫
- 스레드 사용 시 스레드 생성 비용이 높고, 취소 시 개발자의 명시적인 자원 관리가 필요하며, 계층 구조 부재로 자식 스레드 관리가 어렵다. 😥
- 코루틴은 코드 간결성, 쉬운 취소, 낮은 비용, 구조화된 동시성 등의 장점을 제공한다. 😎
- 스레드 5만 개 생성 시 코루틴 대비 약 30배의 시간이 더 소요되며, 스레드는 메모리 에러가 발생할 수 있다. 🤯
- 코루틴은 OS 레벨까지 접근하지 않고, 컨텍스트 스위칭 비용이 적으며, 적은 메모리를 사용한다. 😇
- 코루틴은 일시 중단 시 현재 상태를 저장하고 복원하는 방식으로 동작하며, OS 개입 없이 일반 코틀린 코드로 변환된다. 🤩
- 스레드는 OS가 관리하며 CPU에 작업 요청을 하는 실행 단위이고, 코루틴은 스레드 위에서 실행되는 일반 코틀린 코드이다. 🤔
- 스레드는 선점형 스케줄링, 코루틴은 협력적 스케줄링 방식을 사용하며, 스레드는 병렬성, 코루틴은 동시성에 적합하다. 😮