Gmarket Tech Blog

코루틴(Coroutine)에 대하여

thumbnail

코루틴(Coroutine)이란?

  • 실행의 지연과 재개를 허용함으로써, 비선점적 멀티태스킹을 위한 서브 루틴을 일반화한 컴퓨터 프로그램 구성요소
  • 코루틴은 메인 쓰레드가 Blocking 되는 부분에 도움을 주며, 비동기 처리 코드를 순차적인 코드로 만들 수 있게 함
  • 동시성 프로그래밍을 쓰레드와 코루틴 간 비교해 보면 코루틴은 하나의 쓰레드 내 코루틴 간 관계 정의를 통해 중단 및 재개가 가능하여 Context switching 비용으로 인한 오버헤드 없이 언어 레벨에서 스케줄링이 가능

코루틴의 장점

  • 비동기 처리 코드를 순차적인 코드로 만들어 가독성을 높임
  • 필요한 기능만 구현하면 되기 때문에 코드량이 적고 메모리도 효율적으로 사용 가능
  • Context switching 비용이 적고 동시성 관리가 용이하여 성능도 우수

코루틴 vs. ReactiveX

  • RxJava와 같은 라이브러리에서도 비동기 처리 문제를 해결할 수 있지만, 코루틴을 사용하면 낮은 러닝 커브로 이해하기 쉬운 간결한 코드를 작성 가능함
  • 코루틴은 언어 레벨에서 스케줄링이 가능하므로 Context switching 비용이 적음

마무리

  • 비동기 처리에 필요한 개념을 이해하기 위해서는 코루틴과 같은 개념을 알고 있어야 함
  • 코루틴은 동시성 처리에 용이하며, 코드량이 적고 가독성이 좋음
  • RxJava와 같은 라이브러리 역시 비동기 처리 문제를 해결할 수 있지만, 코루틴을 사용하면 보다 쉬운 코드 작성이 가능하고 성능도 우수함.