Clojure High Performance Programming by 2013

Clojure High Performance Programming by 2013

Author:2013
Language: eng
Format: mobi, epub
Publisher: Packt Publishing


On inspection of the Clojure 1.5.1 source code, we can find that the thread pool for low-latency actions is named pooledExecutor (a bounded thread pool initialized to a maximum of "2 + number of hardware processors" threads) and the thread pool for high-latency actions is named soloExecutor (an unbounded thread pool). The premise of this default configuration is that the CPU-, cache-, or memory-bound actions run most optimally on a bounded thread pool with the default number of threads. The I/O-bound tasks do not consume CPU resources. Hence, a relatively larger number of such tasks can execute at the same time without significantly affecting the performance of CPU-, cache-, or memory-bound jobs. The following is how you can access and override the thread pools:

(import 'clojure.lang.Agent) Agent/pooledExecutor ; thread pool for low-latency actions Agent/soloExecutor ; thread pool for I/O actions (import 'java.util.Executors) (def a-pool (Executors/newFixedThreadPool 10)) ; 10 threads (def b-pool (Executors/newFixedThreadPool 100)) ; 100 threads (def a (agent 0)) (send-via a-pool a inc) ; use a-pool for the action (set-agent-send-executor! a-pool ; set default pool for send (set-agent-send-off-executor! b-pool ; set default for send off



Download



Copyright Disclaimer:
This site does not store any files on its server. We only index and link to content provided by other sites. Please contact the content providers to delete copyright contents if any and email us, we'll remove relevant links or contents immediately.