Some lockable objects are “agent oblivious” in that they work for any
execution agent model because they do not determine or store the agent's ID (e.g., an
ordinary spin lock).
The Cpp17BasicLockable requirements, the Cpp17Lockable requirements,
the Cpp17TimedLockable requirements,
the Cpp17SharedLockable requirements, and
the Cpp17SharedTimedLockable requirements
list the requirements imposed by these library types
in order to acquire or release ownership of a lock by a given execution agent.