2010-06-14 4 views
9

난 그냥 릭 Hickey의 "Clojure 동시성"이야기를보고 끝났어, 그리고 스레드에 대해 몇 가지 질문이 있습니다.스레드 많은 Clojure

많은 에이전트가있는 상황에서 10,000 대가 하나의 시스템을 실행한다고 가정 해 봅시다. 차라리 한 번에 10,000 개의 CPU 스레드가 실행되지는 않지만 다른 스레드의 동작에 의해 스레드가 차단되는 것을 원하지 않습니다.

이 예제에서는 응답을 기다리지 않고 각각의 에이전트가 메시지 하나 또는 두 개를 보낸 다음 메시지가 나타날 때까지 기다릴 것입니다.

시스템을 느리게 종료시키는 10k OS 스레드를 얻지 않고 어떻게 이런 프로그램을 구조화 할 수 있습니까?

답변

2

Clojure는 JVM 위에서 실행됩니다. 따라서 10,000 개의 Java 스레드가있을 수 있지만 10,000 개의 OS 프로세스와 동일하지는 않습니다. 가비지 컬렉터가 병목 현상을 일으킬 수 있다고 생각하기 때문에 각 에이전트의 발자국을 조정하는 데 집중할 것입니다. (튜닝을하기 전에 테스트하고 확인해야한다는 것은 말할 필요도 없습니다.)