Who throws the exception? Documentation of `throwTo` sais that the calling thread is blocked until the exception is delivered. If the target thread has async exceptions masked then the exception is never delivered.

Does that also mean a blocked thread which has async exceptions masked is, essentially, a resource leak?

On Sun, Oct 18, 2015 at 5:23 AM Michael Sloan <mgsloan@gmail.com> wrote:
In this case, the GC will indeed find that no one has a reference to the thread.  However, instead of garbage collecting the thread, the BlockedIndefinitely exception is thrown to it.  So, it resumes execution of the thread with that exception.

This also applies to threads blocked on MVars.

-Michael

On Sat, Oct 17, 2015 at 9:11 AM, Tomas Carnecky <tomas.carnecky@gmail.com> wrote:
If a thread is blocking indefinitely in an STM transaction (reading from a queue to which nobody else has a reference and thus can not write into), is the runtime smart enough to GC the thread? Or do I have to kill the thread manually?

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe