Initializes a new instance of the SpinLock
structure with the option to track thread IDs to improve debugging.
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.
Namespace:
System.Threading
Assembly:
System.Threading (in System.Threading.dll)
Syntax
Visual Basic (Declaration) |
---|
Public Sub Enter ( _ ByRef lockTaken As Boolean _ ) |
C# |
---|
public void Enter( ref bool lockTaken ) |
Parameters
- lockTaken
- Type:
System..::.Boolean
%
True if the lock is acquired; otherwise, false. lockTaken must be initialized to false prior to calling this method.
Remarks
The default constructor for SpinLock tracks thread ownership.
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.
Exceptions
Exception | Condition |
---|---|
System.Threading..::.LockRecursionException | Thread ownership tracking is enabled, and the current thread has already acquired this lock. |
System..::.ArgumentException | The lockTaken argument must be initialized to false prior to calling Enter. |