2017-09-23 21 views
0

Gevent/Greenlet이 실행될 다음 Greenlet을 선택하는 방식을 이해하려고합니다. 스레드는 OS 스케줄러를 사용합니다. 실행 런타임에서는 2 개의 계층 적 대기열을 사용합니다.Gevent는 다음 재배지를 어떻게 선택합니까?

기본적으로 Gevent는 libevent를 사용합니다. 그러나 많은 사람들이 준비가되어 있다면, libevent가 다음 그린레울을 어떻게 달릴 것입니까?

무작위입니까?

나는 이미 문서를 읽고 소스 코드를 확인했다. 여전히 모르다.

업데이트 : Gevent가 libevent를 사용함을 인식하도록 텍스트가 변경되었습니다. 문제는 여전히 libevent에 적용됩니다.

+0

먼저 녹서 자체가 '선택'하지 않는다는 점에 유의하십시오. Greenlet은 한 코 루틴이 다른 코 루틴에 양보하는 메커니즘만을 제공합니다. gevent는 greenlet + libevent이고 libevent는 이벤트 루프를 제공합니다. – jwg

+1

그렇기 때문에 동등하지만 더 정확한 질문이 될 것입니다. : 많은 사람들이 준비가되어 있다면, Gevent에서 사용할 때 libevent가 다음 그린 레를 어떻게 선택합니까? – alanjds

+0

@alands, 예, 그렇습니다. – jwg

답변

0

다른 이벤트를 모니터링하는 이벤트 기반을 사용하는 libevent의 이벤트 루프가 기본 디스패치 모델입니다. 그 다음 반응을 보이면 그 다음 반응을 보입니다. 그러면 내가 그린클릿이 어떤 fuckery를 할 것입니다. 그런 다음 세마포어로 libevent에 디스패치합니다.

+0

StackOverflow에 오신 것을 환영합니다! 이것은 몇 가지 유용한 정보, 특히 libevent의 존재를 추가하지만, 나는 그것이 질문에 완전히 대답했다고 생각하지 않는다. – jwg