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.

One day we might make this automatic, but you're missing the main point: what GHC gives you is lightweight threads that scale transparently on a multiprocessor. You can create thousands of threads without worrying about performance, and therefore you are free to structure your program's concurrency according to the application's needs, not the demands of performance. You don't have to limit the number of threads and do event-driven programming just because threads are too expensive. And your program will scale on a multiprocessor without recompilation.

Cheers,
        Simon

_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to