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。
例外
在调用 Enter 之前,lockTaken
参数必须初始化为 false。
线程所有权跟踪已启用,当前线程已获取此锁定。
注解
SpinLock 是一个非重新进入锁,这意味着如果线程持有锁,则不允许再次输入锁。 如果启用了线程所有权跟踪 (是否通过 IsThreadOwnerTrackingEnabled) 启用,则当线程尝试重新输入已保留的锁时,将引发异常。 但是,如果已禁用线程所有权跟踪,则尝试输入已持有的锁将导致死锁。
如果在未首次调用内部状态SpinLock的情况下调用EnterExit,可能会损坏。