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。

例外

在调用 Enter 之前,lockTaken 参数必须初始化为 false。

线程所有权跟踪已启用,当前线程已获取此锁定。

注解

SpinLock 是一个非重新进入锁,这意味着如果线程持有锁,则不允许再次输入锁。 如果启用了线程所有权跟踪 (是否通过 IsThreadOwnerTrackingEnabled) 启用,则当线程尝试重新输入已保留的锁时,将引发异常。 但是,如果已禁用线程所有权跟踪,则尝试输入已持有的锁将导致死锁。

如果在未首次调用内部状态SpinLock的情况下调用EnterExit,可能会损坏。

适用于

另请参阅