It's not strictly necessary to have a list of all xids at all. The normal "shared read lock" is just "take the write lock, increment the readers counter, unlock" Anyone who wants to write has to wait (using, eg, a condition variable) until the readers count goes to 0.
This gets the right semantics but without the debugging info of a list of lockers. Other than debugging the only advantage I see to having the list of lockers is for deadlock detection. Is that absolutely mandatory? -- greg ---------------------------(end of broadcast)--------------------------- TIP 2: you can get off all lists at once with the unregister command (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])