Work stealing helps keep workers busy during a parallel fold. A fold splits a supported collection into chunks, reduces the chunks in parallel, and combines their results. Workers may split chunks further; when a worker becomes free, it can take unfinished work from another worker. section 7.1.1
This matters when work takes unpredictable amounts of time: one busy worker need not leave others idle. It improves on basic thread pooling in that situation, but parallelism is not automatically faster for small jobs. section 7.1.1
A fold with parallel work available
After `(require '[clojure.core.reducers :as r])`, `(r/fold + (into [] (range 1000000)))` returns `499999500000`. For a 1,000-element vector, the supplied benchmark instead found `r/fold` slower than `reduce`; use the extra scheduling work where the workload warrants it. section 7.1.1




