Executing tasks in parallel
The simultaneous execution of several computations is termed as parallelism. The use of parallelism tends to increase the overall performance of a computation, since the computation can be partitioned to execute on several cores or processors. Clojure has a couple of functions that can be used for the parallelization of a particular computation or task, and we will briefly examine them in this section.
Note
The following examples can be found in src/m_clj/c2/parallel.clj
of the book's source code.
Suppose we have a function that pauses the current thread for some time and then returns a computed value, as depicted in Example 2.17:
(defn square-slowly [x] (Thread/sleep 2000) (* x x))
Example 2.17: A function that pauses the current thread
The function square-slowly
in Example 2.17 requires a single argument x
. This function pauses the current thread for two seconds and returns the square of its argument x
. If the function square-slowly
is invoked over a collection...