Manages a set of named read/write locks. A global lock is represented by an empty name (i.e "").
Obtaining a named read or write lock should implicitly obtain a global read lock.
Consequently, all named locks are blocked if a global write lock is obtained.
author: Paul Ferraro