SpinLock.Enter(Boolean) Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Acquires the lock in a reliable manner, such that even if an exception occurs within the method call, lockTaken
can be examined reliably to determine whether the lock was acquired.
public:
void Enter(bool % lockTaken);
public void Enter (ref bool lockTaken);
member this.Enter : bool -> unit
Public Sub Enter (ByRef lockTaken As Boolean)
Parameters
- lockTaken
- Boolean
True if the lock is acquired; otherwise, false. lockTaken
must be initialized to false prior to calling this method.
Exceptions
The lockTaken
argument must be initialized to false prior to calling Enter.
Thread ownership tracking is enabled, and the current thread has already acquired this lock.
Remarks
SpinLock is a non-reentrant lock, meaning that if a thread holds the lock, it is not allowed to enter the lock again. If thread ownership tracking is enabled (whether it's enabled is available through IsThreadOwnerTrackingEnabled), an exception will be thrown when a thread tries to re-enter a lock it already holds. However, if thread ownership tracking is disabled, attempting to enter a lock already held will result in deadlock.
If you call Exit without having first called Enter the internal state of the SpinLock can become corrupted.