对象锁定

对象锁定提供获取特定系统或应用程序对象上的锁定的方法。

在某些情况下,系统代表用户对某些对象执行的操作获取对象锁定。 系统对某些操作强制实施对象锁定。

您可以获取对象锁定,以便锁定仅在线程 (thread-scoped) 或进程 (process-scoped) 中有效。 如果同一进程中的两个线程都尝试获取对系统对象的进程作用域锁定,那么这两个线程都满足该锁定。 如果另一个线程处于同一进程中,那么这两个线程都不会阻止另一个线程获取锁定。

如果要使用对象锁定来保护同一进程中的两个线程对对象的访问,那么必须使用作用域限定为线程的对象锁定。 作用域为线程的对象锁定从不与作用域为同一进程获取的进程的对象锁定冲突。

对象锁定允许应用程序协调不同锁定请求类型的使用。 多个线程可以获取对同一系统对象的共享但具有线程作用域的锁定。 应用程序还可以以类似于空间锁定的方式获取不同类型的对象锁定。 这允许多个线程在单个目标上获取具有线程作用域的共享锁定。

由于对象锁定提供了额外的锁定类型,因此对象锁定的所有者概念与相互排除 (互斥) 的所有者概念略有不同。 一个具有线程作用域的共享锁定可以有多个所有者。 如果每个所有者都成功获取了共享线程范围的锁定,那么必须为线程解锁所有共享锁定才能获取互斥线程范围的对象锁定。