[Haskell] Blocked STM & GC question

Simon Marlow simonmarhaskell at gmail.com
Mon Sep 17 08:11:47 EDT 2007

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 
> garbage-collected?
> 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 collector?

In this case, your thread should receive the BlockedIndefinitely exception:


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.


More information about the Haskell mailing list