
On 29 March 2006 12:25, Ross Paterson wrote:
On Wed, Mar 29, 2006 at 11:44:12AM +0100, Simon Marlow wrote:
It's much more useful to reserve the term "cooperative" for when the burden is on the programmer to insert context-switch points, as is the case in Hugs. This is a significant difference from the programmer's point of view, whereas the difference in imlementation between GHC and YHC is to a very close approximation invisible.
The dividing line isn't "cooperative", though. Even if an implementation did a context switch after each IO action (i.e. in
=), it would fail your first fairness requirement, as an IO action looping in pure code will starve other threads (as does one that doesn't do allocation in GHC).
Good point - I didn't mean to imply that (not cooperative => fair). Cheers, Simon