[Haskell-cafe] Re: [Haskell] Blocked STM & GC question
simonmarhaskell at gmail.com
Tue Sep 18 11:32:17 EDT 2007
Jules Bean wrote:
> Simon Marlow wrote:
>> Ashley Yakeley wrote:
>>> If I have a thread that's blocked on an STM retry or TChan read, and
>>> none of its TVars are referenced elsewhere, will it get stopped and
>>> I have in mind a pump thread that eternally reads off a TChan and
>>> pushes the result to some function. If the TChan is forgotten
>>> elsewhere, will the permanently blocked thread still sit around using
>>> up some small amount of memory, or will it be reaped by the garbage
>> In this case, your thread should receive the BlockedIndefinitely
>> If the system is idle for a certain amount of time (default 0.3s,
>> change it with the +RTS -I option) a full GC is triggered, which will
>> detect any threads that are blocked on unreachable objects, and
>> arrange to send them the BlockedIndefinitely exception.
> Including MVars? Your quoted text suggests 'Yes' but the docs you link
> to suggest 'No'.
Deadlocked threads blocked on MVars instead get the BlockedOnDeadMVar
exception. Perhaps those two exceptions should be merged.
More information about the Haskell-Cafe