(Go: >> BACK << -|- >> HOME <<)

코루틴

최근 수정 시각:
1
편집
현재 사용중인 아이피가 ACL그룹 IDC #12915에 있기 때문에 편집 권한이 부족합니다.
만료일 : 무기한
사유 : IDC(AS26496)
토론 역사
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부터 지원된다.
  • 코틀린 : 1.3부터 지원된다.
  • 파이썬 : Asyncio라는 기본 내장 라이브러리를 통해 3.5부터 지원된다.#
  • 루아 : 언어의 여덟가지 기본 type 중 하나로 코루틴이 제공된다.[1]
[1] type 명칭은 thread인데, 그 내용은 coroutine

크리에이티브 커먼즈 라이선스
이 저작물은 CC BY-NC-SA 2.0 KR에 따라 이용할 수 있습니다. (단, 라이선스가 명시된 일부 문서 및 삽화 제외)
기여하신 문서의 저작권은 각 기여자에게 있으며, 각 기여자는 기여하신 부분의 저작권을 갖습니다.

나무위키는 백과사전이 아니며 검증되지 않았거나, 편향적이거나, 잘못된 서술이 있을 수 있습니다.
나무위키는 위키위키입니다. 여러분이 직접 문서를 고칠 수 있으며, 다른 사람의 의견을 원할 경우 직접 토론을 발제할 수 있습니다.

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
더 보기