Class Synchronizer
Provides a framework for implementing asynchronous locks and related synchronization primitives that doesn't rely on first-in-first-out (FIFO) wait queues.
Implements
Namespace: DotNext.Threading
Assembly: DotNext.Threading.dll
Syntax
public abstract class Synchronizer : Disposable, ISynchronizer
  Remarks
Derived synchronization primitives more efficient in terms of memory pressure in comparison with QueuedSynchronizer. It shares the same instance of Task<TResult> under contention for all waiters.
Properties
| Improve this Doc View SourceIsSet
Determines whether this event in signaled state.
Declaration
public bool IsSet { get; }
  Property Value
| Type | Description | 
|---|---|
| Boolean | 
Methods
| Improve this Doc View SourceDispose(Boolean)
Releases all resources associated with exclusive lock.
Declaration
protected override void Dispose(bool disposing)
  Parameters
| Type | Name | Description | 
|---|---|---|
| Boolean | disposing | Indicates whether the Dispose(Boolean) has been called directly or from finalizer.  | 
      
Remarks
This method is not thread-safe and may not be used concurrently with other members of this instance.
WaitAsync(TimeSpan, CancellationToken)
Suspends the caller until this event is set.
Declaration
public Task<bool> WaitAsync(TimeSpan timeout, CancellationToken token)
  Parameters
| Type | Name | Description | 
|---|---|---|
| TimeSpan | timeout | The number of time to wait before this event is set.  | 
      
| CancellationToken | token | The token that can be used to cancel waiting operation.  | 
      
Returns
| Type | Description | 
|---|---|
| Task<Boolean> | true, if this event was set; otherwise, false.  | 
      
Exceptions
| Type | Condition | 
|---|---|
| ObjectDisposedException | The current instance has already been disposed.  | 
      
| ArgumentOutOfRangeException | 
  | 
      
| OperationCanceledException | The operation has been canceled.  | 
      
WaitAsync<T>(Predicate<T>, T, CancellationToken)
Suspends the caller until this event is set.
Declaration
public Task WaitAsync<T>(Predicate<T> condition, T arg, CancellationToken token = default(CancellationToken))
  Parameters
| Type | Name | Description | 
|---|---|---|
| Predicate<T> | condition | Additional condition that must be checked before suspension.  | 
      
| T | arg | The argument to be passed to the predicate.  | 
      
| CancellationToken | token | The token that can be used to cancel waiting operation.  | 
      
Returns
| Type | Description | 
|---|---|
| Task | true, if this event was set; otherwise, false.  | 
      
Type Parameters
| Name | Description | 
|---|---|
| T | The type of predicate parameter.  | 
      
Remarks
If given predicate returns true then caller will not be suspended.
Exceptions
| Type | Condition | 
|---|---|
| ObjectDisposedException | The current instance has already been disposed.  | 
      
| OperationCanceledException | The operation has been canceled.  | 
      
WaitAsync<T>(Predicate<T>, T, TimeSpan, CancellationToken)
Suspends the caller until this event is set.
Declaration
public Task<bool> WaitAsync<T>(Predicate<T> condition, T arg, TimeSpan timeout, CancellationToken token = default(CancellationToken))
  Parameters
| Type | Name | Description | 
|---|---|---|
| Predicate<T> | condition | Additional condition that must be checked before suspension.  | 
      
| T | arg | The argument to be passed to the predicate.  | 
      
| TimeSpan | timeout | The number of time to wait before this event is set.  | 
      
| CancellationToken | token | The token that can be used to cancel waiting operation.  | 
      
Returns
| Type | Description | 
|---|---|
| Task<Boolean> | true, if this event was set; otherwise, false.  | 
      
Type Parameters
| Name | Description | 
|---|---|
| T | The type of predicate parameter.  | 
      
Remarks
If given predicate returns true then caller will not be suspended.
Exceptions
| Type | Condition | 
|---|---|
| ObjectDisposedException | The current instance has already been disposed.  | 
      
| ArgumentOutOfRangeException | 
  | 
      
| OperationCanceledException | The operation has been canceled.  | 
      
WaitAsync<T1, T2>(Func<T1, T2, Boolean>, T1, T2, CancellationToken)
Suspends the caller until this event is set.
Declaration
public Task WaitAsync<T1, T2>(Func<T1, T2, bool> condition, T1 arg1, T2 arg2, CancellationToken token = default(CancellationToken))
  Parameters
| Type | Name | Description | 
|---|---|---|
| Func<T1, T2, Boolean> | condition | Additional condition that must be checked before suspension.  | 
      
| T1 | arg1 | The first argument to be passed to the predicate.  | 
      
| T2 | arg2 | The second argument to be passed to the predicate.  | 
      
| CancellationToken | token | The token that can be used to cancel waiting operation.  | 
      
Returns
| Type | Description | 
|---|---|
| Task | true, if this event was set; otherwise, false.  | 
      
Type Parameters
| Name | Description | 
|---|---|
| T1 | The type of the first predicate parameter.  | 
      
| T2 | The type of the second predicate parameter.  | 
      
Remarks
If given predicate returns true then caller will not be suspended.
Exceptions
| Type | Condition | 
|---|---|
| ObjectDisposedException | The current instance has already been disposed.  | 
      
| OperationCanceledException | The operation has been canceled.  | 
      
WaitAsync<T1, T2>(Func<T1, T2, Boolean>, T1, T2, TimeSpan, CancellationToken)
Suspends the caller until this event is set.
Declaration
public Task<bool> WaitAsync<T1, T2>(Func<T1, T2, bool> condition, T1 arg1, T2 arg2, TimeSpan timeout, CancellationToken token = default(CancellationToken))
  Parameters
| Type | Name | Description | 
|---|---|---|
| Func<T1, T2, Boolean> | condition | Additional condition that must be checked before suspension.  | 
      
| T1 | arg1 | The first argument to be passed to the predicate.  | 
      
| T2 | arg2 | The second argument to be passed to the predicate.  | 
      
| TimeSpan | timeout | The number of time to wait before this event is set.  | 
      
| CancellationToken | token | The token that can be used to cancel waiting operation.  | 
      
Returns
| Type | Description | 
|---|---|
| Task<Boolean> | true, if this event was set; otherwise, false.  | 
      
Type Parameters
| Name | Description | 
|---|---|
| T1 | The type of the first predicate parameter.  | 
      
| T2 | The type of the second predicate parameter.  | 
      
Remarks
If given predicate returns true then caller will not be suspended.
Exceptions
| Type | Condition | 
|---|---|
| ObjectDisposedException | The current instance has already been disposed.  | 
      
| ArgumentOutOfRangeException | 
  | 
      
| OperationCanceledException | The operation has been canceled.  | 
      
Explicit Interface Implementations
| Improve this Doc View SourceISynchronizer.HasWaiters
Declaration
bool ISynchronizer.HasWaiters { get; }
  Returns
| Type | Description | 
|---|---|
| Boolean |