2014-10-17 4 views
5

ThreadPool implementation nella biblioteca clojure core.async utilizza un FixedThreadPoolExecutor di size = # di core * 2 + 42.Perché il threadpool per core.async in clojure è stato creato con un pool di thread fisso di # di core volte 2 più 42?

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

C'è un motivo per utilizzare questi numeri (Numero di core 2 volte più 42) a particolare? È ottimale per tutti i dispositivi? Voglio solo sapere come si sono risolti i ricchi hickey (e contributori) con questi numeri.


Grazie nullptr.

Ecco la discussione per coloro che sono interessati: http://clojure-log.n01se.net/date/2013-08-29.html#15:45a

+0

Questo algoritmo è stato introdotto [qui] (https://github.com/clojure/core.async/commit/7b64bd8a22c2b6df69c23dce34eb66d705f5bf1a). Potresti provare a chiedere all'autore [https://github.com/halgari]. – user100464

risposta