섬유, 코 루틴 및 녹색 실 사이에 차이가 있습니까? 그렇다면 무엇입니까?


57

오늘 저는 인터넷에서 섬유, 코 루틴 및 녹색 실에 대한 여러 기사를 읽었습니다.이 개념은 공통점이 많지만 특히 섬유 및 코 루틴에 대해 이야기 할 때 약간의 차이가 있습니다.

서로 다른 점에 대한 간결하고 정확한 요약이 있습니까?

업데이트 : Distinguishing coroutines and fiber (N4024 C ++ draft) 문서가 섬유와 코 루틴을 구별하는 데 특히 좋습니다.

답변:


106

섬유는 선점 형 멀티 태스킹 대신 협동 멀티 태스킹을 사용하는 경량 스레드입니다. 실행중인 파이버는 다른 파이버를 실행할 수 있도록 명시 적으로 "수율"해야하므로 커널 또는 사용자 스레드보다 훨씬 쉽게 구현할 수 있습니다.

루틴 은 서브 루틴을 일반화하여 특정 위치에서 실행을 일시 중단 및 재개하기위한 여러 진입 점을 허용하는 구성 요소입니다. 서브 루틴과 달리 코 루틴은 다른 코 루틴을 호출하여 종료 할 수 있으며 나중에 원래 코 루틴에서 호출 된 지점으로 돌아갈 수 있습니다.

녹색 스레드는 기본 운영 체제에서 가상 머신 (VM) 대신에 기본적으로 예약 된 스레드입니다. 녹색 스레드는 기본 OS 기능에 의존하지 않고 멀티 스레드 환경을 에뮬레이션하며 커널 공간 대신 ​​사용자 공간에서 관리되므로 기본 스레드 지원이없는 환경에서 작동 할 수 있습니다.


13
나는 나 자신 만 말할 수 있습니다. 이에 대해 Robert와 의견을 공유합니다.
DejanLekic

"광범위한 주제의 요약은 위키피디아의 전문 분야로,이 컨텐츠를 제공하고 그것에 초점을 맞춘 문화를 육성하는 데 초점을 맞추고 최적화되어 있습니다. 그러한 요약을 제공 할 수있는 능력이 있고 경험이 많은 사람들은 스택 익스체인지가 아닌 위키피디아에갑니다 ... 검색 엔진에서 이것을 찾는 사람들은 일반적으로 SE 네트워크와 Wikipedia에서 직접 경쟁하는 두 가지 컨텐츠 예제를 제시 할 것입니다 ... 위에서 언급 한 이유로 인해 SE 컨텐츠가 비교적으로 열등 할 가능성이 높습니다 ... "
gnat

코 루틴과 섬유는 아마도 아주 똑같은 것으로 간주 될 수 있습니다. 코 루틴을 원한다면 아주 적은 노력으로 섬유를 통해 구현할 수 있으며 그 반대도 마찬가지입니다.
cHao

9
그들이 어떻게 다른지 설명하지 않습니다. 이 모든 정의는 다소 동등한 것으로 보입니다.
하센

1
@gstackoverflow : Java 스레드는 OS 스레드입니다. JVM은 OS를 통해 스케줄합니다.
Robert Harvey
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.