wolfgang 2003/10/01 03:49:09 PDT
Modified files:
ghc/rts RtsAPI.c Capability.c Capability.h
Schedule.c Schedule.h Select.c Task.c
Task.h
Log:
Threaded RTS:
Don't start new worker threads earlier than necessary.
After this commit, a Haskell program that uses neither forkOS nor forkIO is
really single-threaded (rather than using two OS threads internally).
Some details:
Worker threads are now only created when a capability is released, and
only when
(there are no worker threads)
&& (there are runnable Haskell threads ||
there are Haskell threads blocked on IO or threadDelay)
awaitEvent can now be called from bound thread scheduling loops
(so that we don't have to create a worker thread just to run awaitEvent)
Revision Changes Path
1.49 +1 -7 fptools/ghc/rts/RtsAPI.c
1.20 +34 -3 fptools/ghc/rts/Capability.c
1.12 +1 -0 fptools/ghc/rts/Capability.h
1.176 +37 -16 fptools/ghc/rts/Schedule.c
1.40 +6 -5 fptools/ghc/rts/Schedule.h
1.30 +17 -1 fptools/ghc/rts/Select.c
1.7 +13 -0 fptools/ghc/rts/Task.c
1.5 +1 -0 fptools/ghc/rts/Task.h
_______________________________________________
Cvs-ghc mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/cvs-ghc