Make a weak pointer to a
ThreadId. It can be important to do
this if you want to hold a reference to a
ThreadId while still
allowing the thread to receive the
BlockedIndefinitely family
of exceptions (e.g.
BlockedIndefinitelyOnMVar). Holding a
normal
ThreadId reference will prevent the delivery of
BlockedIndefinitely exceptions because the reference could be
used as the target of
throwTo at any time, which would unblock
the thread.
Holding a
Weak ThreadId, on the other hand, will not prevent
the thread from receiving
BlockedIndefinitely exceptions. It
is still possible to throw an exception to a
Weak ThreadId,
but the caller must use
deRefWeak first to determine whether
the thread still exists.