212 Introduction to Concurrency in Programming Languages
provide a queueing and scheduling system to handle giving out work to and
organizing results from the set of workers (e.g., the master-worker design pat-
tern). Erlang is an example where workers can be implemented as persistent
processes. In either case, the logical decomposition of the program into tasks
is an essential defining feature of the implementation.
The choice of a fixed set of persistent workers versus transient workers that
come and go is often application or language dependent. In languages that
provide a thread abstraction above the underlying runtime implementation, a
programmer may program as though threads are transient while the language
and runtime draw from a pool of persistent ...