Joe Marcus Clarke <marcus <at> marcuscom.com> writes: > > The newest GLib (as well as PHP APC) is starting to use adaptive mutexes > in their code. When a mutex type is set to adaptive and you try to call > pthread_mutex_trylock() on it, you get back an EINVAL. Is this a bug, > or should this really be happening (the code clearly indicates adaptive > mutexes are not handled by trylock)?
Adaptive mutex is a combination of a mutex and a spinlock with adjusted duration of spinning ("trylocking"). The primary purpose of a spinlock is to protect portions of the code that implement other synchronization primitives such as a mutex, etc. The pthread_mutex_trylock() attempts to acquire a lock on a mutex. It follows it is proper to deny direct access to (adaptive) mutex by pthread_mutex_trylock(). > I imagine Linux is not doing this since the code doesn't abort on Linux > as it does on FreeBSD. Should we be silently allowing trylock to > perform a no-op on adaptive mutexes, or should we be handling adaptive > mutexes with trylock? Thanks. I do not know why Linux handles it the way it does. jb _______________________________________________ freebsd-questions@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"