Go to the first, previous, next, last section, table of contents.

Concurrent and Parallel Haskell

Concurrent and Parallel Haskell are Glasgow extensions to Haskell which let you structure your program as a group of independent `threads'. Concurrent and Parallel Haskell have very different purposes. Concurrent Haskell is for applications which have an inherent structure of interacting, concurrent tasks (i.e. `threads'). Threads in such programs may be required. For example, if a concurrent thread has been spawned to handle a mouse click, it isn't optional -- the user wants something done! A Concurrent Haskell program implies multiple `threads' running within a single Unix process on a single processor. You will find at least one paper about Concurrent Haskell hanging off of Simon Peyton Jones's Web page; `http://www.dcs.gla.ac.uk/~simonpj/'. Parallel Haskell is about speed -- spawning threads onto multiple processors so that your program will run faster. The `threads' are always advisory -- if the runtime system thinks it can get the job done more quickly by sequential execution, then fine. A Parallel Haskell program implies multiple processes running on multiple processors, under a PVM (Parallel Virtual Machine) framework. Parallel Haskell is still relatively new; it is more about "research fun" than about "speed." That will change. Again, check Simon's Web page for publications about Parallel Haskell (including "GUM", the key bits of the runtime system). Some details about Concurrent and Parallel Haskell follow.
Go to the first, previous, next, last section, table of contents.