상위 질문
타임라인
채팅
관점
코루틴
위키백과, 무료 백과사전
Remove ads
코루틴(coroutine)은 루틴의 일종으로서, 협동 루틴이라 할 수 있다(코루틴의 "Co"는 with 또는 together를 뜻한다). 상호 연계 프로그램을 일컫는다고도 표현가능하다. 루틴과 서브 루틴은 서로 비대칭적인 관계이지만, 코루틴들은 완전히 대칭적인, 즉 서로가 서로를 호출하는 관계이다. 코루틴들에서는 무엇이 무엇의 서브루틴인지를 구분하는 것이 불가능하다. 코루틴 A와 B가 있다고 할 때, A를 프로그래밍 할 때는 B를 A의 서브루틴으로 생각한다. 그러나 B를 프로그래밍할 때는 A가 B의 서브루틴이라고 생각한다. 어떠한 코루틴이 발동될 때마다 해당 코루틴은 이전에 자신의 실행이 마지막으로 중단되었던 지점 다음의 장소에서 실행을 재개한다.[1]
도널드 커누스에 따르면 멜빈 콘웨이는 1958년 코루틴(coroutine)이라는 용어를 만들어냈으며 당시 그는 이를 어셈블리 프로그램에 적용했다.[2] 코루틴에 관해 설명된 최초의 출판물은 1963년에 등장하였다.[3]
Remove ads
네이티브 지원 프로그래밍 언어
코루틴은 어셈블리어 메소드로 기원하였으나 일부 고급 프로그래밍 언어에 지원된다. 초기 예시로는 시뮬라[4], 스몰토크, 모듈라-2가 포함된다. 더 최근의 예로는 루비, 루아, 줄리아, Go가 포함된다.
- Aikido
- AngelScript
- Ballerina
- BCPL
- 파스칼 (uThreads 모듈이 포함된 볼랜드 터보 파스칼 7.0)
- BETA
- BLISS
- C++ (C++20 이후)
- C# (2.0 이후)
- ChucK
- CLU
- D
- 다이내믹 C
- 얼랭
- F#
- 팩터
- 게임몽키 스크립트
- GDScript (Godot의 스크립트 언어)
- Go
- 하스켈[5][6]
- High Level Assembly[7]
- 아이콘
- 아이오
- 자바스크립트 (ECMAScript 6에서 표준화된 1.7 이후)[8] ECMAScript 2017 또한 await 지원을 포함한다.
- 줄리아[9]
- 코틀린 (1.1 이후)[10]
- 림보
- 루아[11]
- 루시드
- µC++
- MiniD
- Modula-2
- Nemerle
- 펄 (Coro 모듈 사용 시)
- PHP (HipHop 사용 시. 네이티브 지원은 PHP 5.5 이후.)
- Picolisp
- 프롤로그
- 파이썬 (2.5 이후,[12] 3.3 이후부터 개선 지원됨, 3.5 이후부터 명시적 문법 지원[13])
- Raku[14]
- 루비
- Sather
- 스킴
- 셀프
- 시뮬라 67
- 스몰토크
- 스퀴럴
- 스택리스 파이썬
- Supercollider[15]
- Tcl (8.6 이후)
- urbiscript
Remove ads
같이 보기
- 파이프 (유닉스): 코루틴의 일종
각주
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads