While using weak pointers and concurrency together, I became
convinced that before issuing the ``no threads to run:
infinite loop or deadlock?'' error message, the RTS should
perform a GC.  The reason is that the GC may run some
finalisers, which in turn may unlock some threads.

The concrete scenario that I have is that I use a finaliser
to close a stream when the handle that provides input to
that stream dies.  Now if the only other thread is a
consumer of that stream that waits for it to close, then
this thread can't run before the next GC is performed and
runs the finaliser.

Opinions?

Cheers,
Manuel


_______________________________________________
Glasgow-haskell-users mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to