Li, Peng wrote:

The paper "Extending the Haskell FFI with Concurrency" mentioned the
following in Section 6.3:

"GHC's run-time system employs one OS thread for every bound thread;
additionally, there is a variable number of so-called "worker" OS
threads that are used to execute the unbounded (lightweight) threads."

How does the runtime system determine the number of worker threads?
Is the number hardcoded in the RTS or dynamically adjustable?  Can a
programmer specify it as an RTS option or change it using an API?
>
I would like to use a large number (say, 2000) of unbounded threads,
each calling a blocking, safe foreign function via FFI import.  What
is supposed to happen if all the worker threads are used up?  I tried
this in the recent GHC 6.5 and got some kind of "runaway worker
threads?" RTS failure message when more than 32 threads are used. Is
it a current limitation of the RTS, or should I file a bug report for
it?

As mentioned by Simon PJ, the number of worker threads grows as needed (but doesn't decrease - that would be a useful improvement).

The message you're seeing is due to an arbitrary limit I put on the number of workers in order to catch bugs in the runtime before they kill the machine. Perhaps I should remove the limit, or at least make it very much larger.

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