The goals of the concurrency standard?

John Meacham john at
Wed Apr 12 06:29:36 EDT 2006

On Wed, Apr 12, 2006 at 11:19:53AM +0100, Simon Marlow wrote:
> I'll argue that point :)  GHC makes run-time checks at safe points and
> implements preemptive concurrency.  Cooperative scheduling is when the
> *programmer* has to insert the safe points.

the programmer of the standard libraries or low level FFI interfaces.
not the end programmer. I would be highly surprised if anyone other than
system or very low level library implementors ever actually needed to
use an explicit 'yield'. certainly a whole lot less often than they have
to add 'seq's and it is a lot more clear when they are needed :)

> The safe points don't even have to be very often: in GHC the context
> switch check is made after every 4k of allocation.

indeed, which means GHC technically doesn't meet the preemptive
requirements since a tight mathematical non-allocating loop can halt it.

in order to do true preemption, you'd need to respond to SIGALRM or
something like that, which can be quite tricky.


John Meacham - ⑆⑆john⑈

More information about the Haskell-prime mailing list