From HaskellWiki
< Parallel
Revision as of 10:05, 20 April 2011 by EricKow (talk | contribs) (A-H)

Jump to: navigation, search


bound thread
distributed memory model
Haskell thread
A Haskell thread is a thread of execution for IO code. Multiple Haskell threads can execute IO code concurrently and they can communicate using shared mutable variables and channels.
see spark (vs threads)





shared memory model
Sparks are specific to parallel Haskell. Abstractly, a spark is a pure computation which may be evaluated in parallel. Sparks are introduced with the par combinator; the expression (x `par` y) "sparks off" x, telling the runtime that it may evaluate the value of x in parallel to other work. Whether or not a spark is evaluated in parallel with other computations, or other Haskell IO threads, depends on what your hardware supports and on how your program is written. Sparks are put in a work queue and when a CPU core is idle, it can execute a spark by taking one from the work queue and evaluating it.
Sparks are ideal for speeding up pure calculations where adding non-deterministic concurrency would just make things more complicated.
OS thread
see Haskell thread, OS thread and bound thread