simonmar at microsoft.com
Mon Apr 3 04:37:37 EDT 2006
On 31 March 2006 13:41, John Meacham wrote:
> I have tried to summarize the current thinking into a proposal on the
> I split it into 3 parts.
> the standard - all haskell' compilers must implement
> optional preemption - ability to preempt pure code, fairness
> guarentees, interleaved evaluation operators (merge, nmerge)
> optional OS threads - bound threads, SMP, reentrant concurrent FFI
> calls supported.
> comment or modify it at will.
Great. Apart from my misgivings about allowing cooperative scheduling
at all, here's a few comments on the proposal:
- I wouldn't include threadWaitRead, threadWaitWrite,
or threadDelay at all. These can all be implemented using
FFI, so don't belong in the concurrency library. Their
presence is largely historical.
- yield bothers me a little. If it weren't for cooperative
systems, yield would be semantically a no-op, because the
no-starvation guarantee means you never need it for
correctness. I think it's ok, just a bit unsettling.
- In the optional OS threads section it says "allows multiple
haskell threads to run at once" - actually you can provide
all that without allowing multiple haskell threads to run
at once, eg. ghc-6.4.1 with -threaded. I'll modify it.
More information about the Haskell-prime