Concurrent-Haskell in GHC

Simon Peyton-Jones
Tue, 4 Feb 2003 09:30:53 -0000

| I've started looking into the docs on GHC's
| implementation of Concurrent-Haskell, and I got
| confused about the architecture. Different sources
| seem to indicate that it either:
| - Uses one OS thread, and blocking IO calls will
| therefore block all the Haskell-threads, or
| - Uses one OS thread, occasionaly (50 times a second?)
| calling select() to simulate blocking IO calls without
| blocking other Haskell-threads, or
| - Uses a pool of OS threads so that when a blocking IO
| call is made, another thread takes over execution.

Basically the last of these.  (At least in the most recent GHC.)  Simon
Marlow implemented a web server using Concurrent Haskell, and has a
paper about it too.