unsafePerformIO and cooperative concurrency
Esa Pulkkinen
esa.pulkkinen at kotiposti.net
Wed Apr 26 15:56:08 EDT 2006
In message <2E9B33CE230409489A7ED37E5E34090F04218DB9 at EUR-MSG-20.europe.corp.mic
rosoft.com>, "Simon Marlow" writes:
>One common case (perhaps the only common case) where this happens is
>hGetContents. The lazy stream returned by hGetContents will not behave
>in a non-blocking way in a cooperative implementation. I can't decide
>which demon to blame here: lazy I/O or cooperative concurrency :-)
Maybe the problem is in combining these demons :-). I mean, maybe the
problem is passing an unevaluated thunk containing references to
resources of one execution context into another (co-operative)
thread. deepSeq'ing the thunk (to force the side effects to take
place) in the correct context before allowing access by the other
thread should help, I think [but you lose ability to pass functions
from one thread to another, which might be worse].
--
Esa Pulkkinen
More information about the Haskell-prime
mailing list