Recursive mutex todo item
Havoc Pennington
hp at redhat.com
Thu Oct 26 16:03:12 PDT 2006
Hi,
Looked into this some just now.
The trick is to emulate recursive mutexes, not use the glibc-specific
feature.
It looks like glibc's PTHREAD_MUTEX_RECURSIVE won't work anyway because
when you wait on a condition variable it only decrements the recursion
count, but does not necessarily unlock all the way.
Java on the other hand will save the recursion count when you wait() on
a recursive lock, and restore it when the wait() returns.
Since we use conditions for the lock we wanted to be recursive (the
dispatch lock) we'll need the Java behavior.
I think I can code this pretty quickly and I also want to update the
docs on how the condition variables have to work.
Hmm... if we're emulating recursive locks anyway, we may as well be able
to emulate them in terms of the nonrecursive mutex funcs. I might code
it that way. This means 1) we'll automatically always have recursive
locks and 2) there will be no new platform-specific code so no danger of
breaking BSD.
Havoc
More information about the dbus
mailing list