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.

Simon Peyton Jones and Sigbjorn Finne have a paper available, "Concurrent Haskell: preliminary version." (draft available via `ftp' from `ftp.dcs.gla.ac.uk/pub/glasgow-fp/drafts').

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 was first released with GHC 0.26; it is more about "research fun" than about "speed." That will change. There is no paper about Parallel Haskell. That will change, too.

Some details about Concurrent and Parallel Haskell follow.

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