코루틴

최근 수정 시각: (5년 전)
목차
1. 개요2. 스레드와의 관계3. 프로그래밍 언어4. 코루틴을 지원하는 언어

1. 개요 [편집]

코루틴은 서브 루틴을 일시 정지하고 재개할 수 있는 구성 요소를 말한다. 쉽게 말해 필요에 따라 일시 정지할 수 있는 함수를 말한다.

코루틴을 사용하여 I/O 처리를 극대화할 수 있는데, 이는 단순히 대기하는 작업을 기다리는 동안 다른 작업을 먼저 처리함으로써 CPU의 유휴 시간(Idle time)을 최소화 할 수 있기 때문이다. 코루틴은 멀티쓰레드를 대체하기 위해 등장한 것은 아니다.

2. 스레드와의 관계 [편집]

스레드는 프로세스 내에서 실행되는 흐름의 단위를 말한다. 그리고 코루틴은 (일시) 정지 가능한 함수로써, 기본적으로 하나의 스레드를 가진다. 따라서 직접적인 관계는 없다.

3. 프로그래밍 언어 [편집]

Go는 언어 차원에서 스레드와 코루틴을 혼합한 '고루틴'이라는 새로운 기능을 제공한다. 여러 스레드에서 코루틴이 한꺼번에 실행된다. 기존의 운영체제가 제공하는 스레드보다 작고 빠른 경량 스레드 개념이며 스레드처럼 동시에 실행할 수 있다.

4. 코루틴을 지원하는 언어 [편집]

  • C++ : C++20에 stackless coroutine이 추가되었다.
  • Rust : 2018 에디션에서 코루틴 관련 문법과 트레이트를 지원한다. 다만, 실행자를 별도로 구현하거나 라이브러리를 사용해야 한다.
  • 자바스크립트 : ES6이 제정되기 이전에는 AJAX, 콜백을 사용해 비동기를 구현했다. ES6에서는 Promise라는 객체를 이용하면 된다. 최근 async, await 키워드로 가독성이 더 좋아졌다.
  • PHP : 5.5부터 지원된다.
  • C# : 2.0부터 지원된다.
  • 코틀린 : Android의 경우 KTX를 통해 1.1부터 지원된다. KTX 아니다
  • 파이썬 : 3.5부터 지원된다.
  • 루아 : 언어의 여덟가지 기본 type 중 하나로 코루틴이 제공된다.[1]
[1] type 명칭은 thread인데, 그 내용은 coroutine

라이선스를 별도로 명시하지 않은 문서는 CC BY-NC-SA 2.0 KR에 따라 이용할 수 있습니다.
기여하신 문서의 저작권은 각 기여자에게 있으며, 각 기여자는 기여하신 부분의 저작권을 갖습니다.

문서의 기여자는 역사 탭에서 확인할 수 있습니다.
접두어의 N: - 나무위키 사용자, R: - 리그베다 위키의 사용자를 뜻합니다.
자세한 사항은 나무위키에서 동일한 문서의 역사를 참고하시기 바랍니다.