SpinLock.Enter(Boolean) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
以可靠的方式获取锁,以便即使方法调用中发生异常, lockTaken 也可以可靠地检查该锁,以确定是否已获取锁。
public:
void Enter(bool % lockTaken);
public void Enter(ref bool lockTaken);
member this.Enter : bool -> unit
Public Sub Enter (ByRef lockTaken As Boolean)
参数
- lockTaken
- Boolean
如果获取锁,则为 True;否则为 false。
lockTaken 在调用此方法之前,必须初始化为 false。
例外
在 lockTaken 调用 Enter 之前,必须将参数初始化为 false。
已启用线程所有权跟踪,并且当前线程已获取此锁。
注解
SpinLock 是一个非重新进入锁,这意味着如果线程持有锁,则不允许再次进入锁。 如果启用了线程所有权跟踪(是否已启用 IsThreadOwnerTrackingEnabled),则当线程尝试重新输入它已保留的锁时,将引发异常。 但是,如果禁用线程所有权跟踪,则尝试输入已持有的锁将导致死锁。
如果在未首先调用内部状态SpinLock的情况下调用EnterExit,可能会损坏。