SpinLock.Enter(Boolean) 方法

定义

以可靠的方式获取锁,以便即使方法调用中发生异常, 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,可能会损坏。

适用于

另请参阅