코루틴

덤프버전 :


1. 개요
2. 스레드와의 관계
3. 프로그래밍 언어
4. 코루틴을 지원하는 언어



1. 개요[편집]


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

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

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


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


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


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



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


  • C++ : C++20에 stackless coroutine이 추가되었다.
  • Rust : 2018 에디션에서 코루틴 관련 문법과 트레이트를 지원한다. 다만, 실행자를 별도로 구현하거나 라이브러리를 사용해야 한다.
  • Go
  • 자바스크립트 : ES6이 제정되기 이전에는 AJAX, 콜백을 사용해 비동기를 구현했다. ES6부터
    Promise
    라는 객체가 등장하였으며,
    async, await
    키워드로 가독성이 더 좋아졌다.
  • PHP : 5.5부터 지원된다.
  • C\# : 2.0부터 지원된다.
  • 코틀린 : 1.3부터 지원된다.
  • 파이썬 : 3.5부터 지원된다.
  • 루아 : 언어의 여덟가지 기본 type 중 하나로 코루틴이 제공된다.[1]
파일:크리에이티브 커먼즈 라이선스__CC.png 이 문서의 내용 중 전체 또는 일부는 2023-12-20 18:32:21에 나무위키 코루틴 문서에서 가져왔습니다.

[1] type 명칭은 thread인데, 그 내용은 coroutine