The services registry allows components to lookup and rendezvous with an arbitrary "service" using the interface ID (IID) of the desired interface. More than one interface supporting a particular IID can be registered. For example, the C library queries the registry for the lock manager (see Section 4.12) so that it can allocate locks to properly protect its internal data structures when running in a multithreaded environment. The services registry supports the following interface functions.