Described are techniques for synchronizing operations performed on objects. Locking tables may be received where each of the locking tables corresponds to different object class. First processing may be performed by a first thread to acquire a set of one or more locks. Each lock in the set may be a lock for one of the objects. The first processing may include traversing the locking tables in accordance with a predefined ordering and acquiring the set of one or more locks, wherein, for each lock in the set, a first entry is updated in a first of the locking tables to indicate that the first thread has acquired the lock on one of the objects included in an associated object class corresponding to the first locking table.