ghci and ghc -threaded broken with pipes & forking

Chris Kuklewicz haskell at list.mightyreason.com
Mon Mar 5 11:39:54 EST 2007


John Goerzen wrote:
> On Mon, Mar 05, 2007 at 03:20:05PM +0000, Ian Lynagh wrote:
>>> >From reading the docs, it sounds like forkIO keeps everything in a
>>> single OS thread/process.  Doesn't this mean that a program that uses
>>> forkIO instead of forkOS loses out on SMP machines?
>> You can use e.g. +RTS -N2 to use 2 OS threads.
> 
> That's rather ugly though, and doesn't "just work".  With other
> languages, I could just use OS threads, and let the OS schedule, say, 15
> threads across 2 CPUs, or 4 CPUs, or however I may have.
> 
> -- John


Choice is good, but it does mean the default may need to be tweaked, such as 
with those options.

The main difference in how lightweight or heavyweight the threads are. 
Lightweight forkIO threads allow for tremendous performance, see the benchmarks 
here:

http://shootout.alioth.debian.org/gp4/benchmark.php?test=chameneos&lang=all

http://shootout.alioth.debian.org/gp4/benchmark.php?test=message&lang=all

Those benchmarks are without using a "+RTS -N2" style thread pool.

-- 
Chris


More information about the Glasgow-haskell-users mailing list