Clojure viele Threads

9

Ich bin gerade fertig damit, Rick Hickey's "Clojure Concurrency" zu sehen, und ich habe ein paar Fragen über Threads.

Nehmen wir an, ich habe eine Situation mit vielen Agenten, sagen wir mal, dass 10.000 von ihnen eine Maschine laufen haben. Ich möchte lieber nicht 10.000 CPU-Threads auf einmal laufen lassen, aber ich möchte nicht, dass Threads durch die Aktionen anderer Threads blockiert werden.

In diesem Beispiel werde ich nicht wirklich auf Antworten warten, stattdessen sendet jeder Agent eine oder zwei Nachrichten und wartet dann, bis er eine Nachricht erhält.

Wie würde ich ein Programm wie dieses strukturieren, ohne 10k OS-Threads zu bekommen, die wahrscheinlich das System verlangsamen würden.

    
Timothy Baldridge 14.06.2010, 19:14
quelle

1 Antwort

2

Beachten Sie, dass Clojure auf einer JVM läuft. Sie haben vielleicht 10.000 Java-Threads, aber das entspricht nicht 10.000 OS-Prozessen. Ich vermute, dass der Garbage Collector zu Ihrem Engpass führen könnte, also würde ich mich darauf konzentrieren, die Footprints jedes Agenten zu optimieren. (Sie sollten dies natürlich vor dem Abstimmen testen und überprüfen.)

    
Greg 14.06.2010 19:47
quelle

Tags und Links