[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Are mutexes "recursive"?



The mutexes of many thread systems (like Java) are "recursive",
meaning that:
1) if a thread T holds a mutex M, then if T tries to lock M again,
   the operation succeeds without blocking, and
2) M remains locked until T has unlocked M as many times as it locked it.

(I'm not sure that's a correct description of the behavior I have in
mind, but it's a very common feature, and I'm sure you're familiar
with it.)

I can't tell from reading the SRFI whether its mutexes are recursive
or not.  It's certainly possible to build recursive mutexes using
non-recursive mutexes.  However, I think you'll often need to rely on
someone else's mutexes being recursive (i.e., mutexes which protect
some structure provide by a library, and which aren't under your
control), so it would be nicer if this were a property people could
assume.