Struct Lock
Unified representation of monitor lock, semaphore lock, read lock, write lock or upgradeable read lock.
Inherited Members
Namespace: DotNext.Threading
Assembly: DotNext.dll
Syntax
public struct Lock : IDisposable, IEquatable<Lock>
Remarks
The lock acquisition may block the caller thread.
Methods
| Edit this page View SourceAcquire()
Acquires lock.
Declaration
public readonly Lock.Holder Acquire()
Returns
| Type | Description |
|---|---|
| Lock.Holder | The holder of the acquired lock. |
Acquire(TimeSpan)
Acquires lock.
Declaration
public readonly Lock.Holder Acquire(TimeSpan timeout)
Parameters
| Type | Name | Description |
|---|---|---|
| TimeSpan | timeout | The amount of time to wait for the lock. |
Returns
| Type | Description |
|---|---|
| Lock.Holder | The holder of the acquired lock. |
Exceptions
| Type | Condition |
|---|---|
| TimeoutException | The lock has not been acquired during the specified timeout. |
Dispose()
Destroy this lock and dispose underlying lock object if it is owned by the given lock.
Declaration
public void Dispose()
Remarks
If the given lock is an owner of the underlying lock object then this method will call Dispose() on it; otherwise, the underlying lock object will not be destroyed. As a result, this lock is not usable after calling of this method.
Equals(Lock)
Determines whether this lock object is the same as other lock.
Declaration
public readonly bool Equals(Lock other)
Parameters
| Type | Name | Description |
|---|---|---|
| Lock | other | Other lock to compare. |
Returns
| Type | Description |
|---|---|
| bool | true if this lock is the same as the specified lock; otherwise, false. |
Equals(object?)
Determines whether this lock object is the same as other lock.
Declaration
public override readonly bool Equals(object? other)
Parameters
| Type | Name | Description |
|---|---|---|
| object | other | Other lock to compare. |
Returns
| Type | Description |
|---|---|
| bool | true if this lock is the same as the specified lock; otherwise, false. |
Overrides
| Edit this page View SourceGetHashCode()
Computes hash code of this lock.
Declaration
public override readonly int GetHashCode()
Returns
| Type | Description |
|---|---|
| int | The hash code of this lock. |
Overrides
| Edit this page View SourceMonitor()
Creates exclusive lock.
Declaration
public static Lock Monitor()
Returns
| Type | Description |
|---|---|
| Lock | The exclusive lock. |
Remarks
Constructed lock owns the object instance used as a monitor.
Monitor(object)
Creates monitor-based lock control object but doesn't acquire the lock.
Declaration
public static Lock Monitor(object obj)
Parameters
| Type | Name | Description |
|---|---|---|
| object | obj | Monitor lock target. |
Returns
| Type | Description |
|---|---|
| Lock | The lock representing monitor. |
ReadLock(ReaderWriterLockSlim, bool)
Creates read lock but doesn't acquire it.
Declaration
public static Lock ReadLock(ReaderWriterLockSlim rwLock, bool upgradeable)
Parameters
| Type | Name | Description |
|---|---|---|
| ReaderWriterLockSlim | rwLock | Read/write lock source. |
| bool | upgradeable | true to create upgradeable read lock wrapper. |
Returns
| Type | Description |
|---|---|
| Lock | Reader lock. |
Semaphore(int, int)
Creates semaphore-based lock but doesn't acquire the lock.
Declaration
public static Lock Semaphore(int initialCount, int maxCount)
Parameters
| Type | Name | Description |
|---|---|---|
| int | initialCount | The initial number of requests for the semaphore that can be granted concurrently. |
| int | maxCount | The maximum number of requests for the semaphore that can be granted concurrently. |
Returns
| Type | Description |
|---|---|
| Lock | The lock representing semaphore. |
Remarks
Constructed lock owns the semaphore instance.
Semaphore(SemaphoreSlim)
Wraps semaphore instance into the unified representation of the lock.
Declaration
public static Lock Semaphore(SemaphoreSlim semaphore)
Parameters
| Type | Name | Description |
|---|---|---|
| SemaphoreSlim | semaphore | The semaphore to wrap into lock object. |
Returns
| Type | Description |
|---|---|
| Lock | The lock representing semaphore. |
ToString()
Returns actual type of this lock in the form of the string.
Declaration
public override readonly string ToString()
Returns
| Type | Description |
|---|---|
| string | The actual type of this lock. |
Overrides
| Edit this page View SourceTryAcquire(out Holder)
Attempts to acquire lock.
Declaration
public readonly bool TryAcquire(out Lock.Holder holder)
Parameters
| Type | Name | Description |
|---|---|---|
| Lock.Holder | holder | The lock holder that can be used to release acquired lock. |
Returns
| Type | Description |
|---|---|
| bool |
TryAcquire(TimeSpan, out Holder)
Attempts to acquire lock.
Declaration
public readonly bool TryAcquire(TimeSpan timeout, out Lock.Holder holder)
Parameters
| Type | Name | Description |
|---|---|---|
| TimeSpan | timeout | The amount of time to wait for the lock. |
| Lock.Holder | holder | The lock holder that can be used to release acquired lock. |
Returns
| Type | Description |
|---|---|
| bool |
TryEnterMonitor(object, TimeSpan, CancellationToken, bool)
Tries to acquire an exclusive lock on the specified object with cancellation support.
Declaration
public static bool TryEnterMonitor(object obj, TimeSpan timeout, CancellationToken token, bool throwOnCancellation = false)
Parameters
| Type | Name | Description |
|---|---|---|
| object | obj | The object on which to acquire the lock. |
| TimeSpan | timeout | Time to wait for the lock. |
| CancellationToken | token | The token that can be used to cancel the operation. |
| bool | throwOnCancellation | true to throw OperationCanceledException if |
Returns
| Type | Description |
|---|---|
| bool | true if the monitor acquired successfully; false if timeout occurred or |
Exceptions
| Type | Condition |
|---|---|
| ArgumentNullException |
|
| ArgumentOutOfRangeException |
|
| OperationCanceledException |
|
WriteLock(ReaderWriterLockSlim)
Creates write lock but doesn't acquire it.
Declaration
public static Lock WriteLock(ReaderWriterLockSlim rwLock)
Parameters
| Type | Name | Description |
|---|---|---|
| ReaderWriterLockSlim | rwLock | Read/write lock source. |
Returns
| Type | Description |
|---|---|
| Lock | Write-only lock. |
Operators
| Edit this page View Sourceoperator ==(in Lock, in Lock)
Determines whether two locks are the same.
Declaration
public static bool operator ==(in Lock first, in Lock second)
Parameters
| Type | Name | Description |
|---|---|---|
| Lock | first | The first lock to compare. |
| Lock | second | The second lock to compare. |
Returns
| Type | Description |
|---|---|
| bool |
operator !=(in Lock, in Lock)
Determines whether two locks are not the same.
Declaration
public static bool operator !=(in Lock first, in Lock second)
Parameters
| Type | Name | Description |
|---|---|---|
| Lock | first | The first lock to compare. |
| Lock | second | The second lock to compare. |
Returns
| Type | Description |
|---|---|
| bool |