2014-10-17 9 views
5

Der Thread implementation in core.async clojure Bibliothek verwendet eine FixedThreadPoolExecutor von size = Anzahl der Kerne * 2 + 42.Warum wird der Threadpool für core.async in clojure mit festem Threadpool von # cores mal 2 plus 42 erstellt?

(defonce the-executor 
    (Executors/newFixedThreadPool 
    (-> (Runtime/getRuntime) 
     (.availableProcessors) 
     (* 2) 
     (+ 42)) 
    (conc/counted-thread-factory "async-dispatch-%d" true))) 

Gibt es einen Grund, diese Zahlen (Anzahl der Kerne mal 2 plus 42) zu verwenden, in besonders? Ist das optimal für alle Geräte? Ich möchte nur wissen, wie sich die Reichen (und Mitwirkenden) mit diesen Zahlen zufrieden geben.


Danke nullptr. Hier

ist die Diskussion für diejenigen, die daran interessiert sind: http://clojure-log.n01se.net/date/2013-08-29.html#15:45a

+0

Dieser Algorithmus eingeführt wurde [hier] (https://github.com/clojure/core.async/commit/7b64bd8a22c2b6df69c23dce34eb66d705f5bf1a). Sie könnten versuchen, den [Autor] (https://github.com/halgari) zu fragen. – user100464

Antwort