Managing concurrent tasks
Clojure has a couple of handy constructs that allow us to define concurrent tasks. A thread is the most elementary abstraction of a task that runs in the background. In the formal sense, a thread is simply a sequence of instructions that can be scheduled for execution. A task that runs in the background of a program is said to execute on a separate thread. Threads will be scheduled for execution on a specific processor by the underlying operating system. Most modern operating systems allow a process to have several threads of execution. The technique of managing multiple threads in a single process is termed as multithreading.
While Clojure does support the use of threads, concurrent tasks can be modeled in more elegant ways using other constructs. Let's explore the different ways in which we can define concurrent tasks.
Note
The following examples can be found in src/m_clj/c2/concurrent.clj
of the book's source code.
Using delays
A delay can be used to define...