Show / Hide Table of Contents

Class AsyncBarrier

Enables multiple tasks to cooperatively work on an algorithm in parallel through multiple phases.

Inheritance
Object
AsyncBarrier
Implements
IAsyncEvent
ISynchronizer
IDisposable
Namespace: DotNext.Threading
Assembly: DotNext.Threading.dll
Syntax
public class AsyncBarrier : Disposable, IAsyncEvent, ISynchronizer, IDisposable
Remarks

This is asynchronous version of with small differences:

  • Post-phase action is presented by virtual method PostPhase(Int64).
  • It it possible to wait for phase completion without signal.
  • It is possible to signal without waiting of phase completion.
  • Post-phase action is asynchronous.
  • Number of phases is limited by data type.

Constructors

| Improve this Doc View Source

AsyncBarrier(Int64)

Initializes a new Barrier withe given number of participating tasks.

Declaration
public AsyncBarrier(long participantCount)
Parameters
Type Name Description
Int64 participantCount

The number of participating tasks.

Properties

| Improve this Doc View Source

CurrentPhaseNumber

Gets the number of the barrier's current phase.

Declaration
public long CurrentPhaseNumber { get; }
Property Value
Type Description
Int64
| Improve this Doc View Source

ParticipantCount

Gets the total number of participants in the barrier.

Declaration
public long ParticipantCount { get; }
Property Value
Type Description
Int64
| Improve this Doc View Source

ParticipantsRemaining

Gets the number of participants in the barrier that haven't yet signaled in the current phase.

Declaration
public long ParticipantsRemaining { get; }
Property Value
Type Description
Int64

Methods

| Improve this Doc View Source

AddParticipant()

Notifies this barrier that there will be additional participant.

Declaration
public long AddParticipant()
Returns
Type Description
Int64

The phase number of the barrier in which the new participants will first participate.

| Improve this Doc View Source

AddParticipants(Int64)

Notifies this barrier that there will be additional participants.

Declaration
public long AddParticipants(long participantCount)
Parameters
Type Name Description
Int64 participantCount

The number of additional participants to add to the barrier.

Returns
Type Description
Int64

The phase number of the barrier in which the new participants will first participate.

| Improve this Doc View Source

Dispose(Boolean)

Releases all resources associated with this barrier.

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.

| Improve this Doc View Source

PostPhase(Int64)

The action to be executed after each phase.

Declaration
protected virtual Task PostPhase(long phase)
Parameters
Type Name Description
Int64 phase

The current phase number.

Returns
Type Description
Task

A task representing post-phase asynchronous execution.

| Improve this Doc View Source

RemoveParticipant()

Notifies this barrier that there will be one less participant.

Declaration
public void RemoveParticipant()
Remarks

This method may resume all tasks suspended by Wait(TimeSpan, CancellationToken) and SignalAndWait(TimeSpan, CancellationToken) methods.

| Improve this Doc View Source

RemoveParticipants(Int64)

Notifies this barrier that there will be fewer participants.

Declaration
public void RemoveParticipants(long participantCount)
Parameters
Type Name Description
Int64 participantCount

The number of additional participants to remove from the barrier.

Remarks

This method may resume all tasks suspended by Wait(TimeSpan, CancellationToken) and SignalAndWait(TimeSpan, CancellationToken) methods.

| Improve this Doc View Source

SignalAndWait()

Signals that a participant has reached the barrier and waits for all other participants to reach the barrier as well.

Declaration
public Task SignalAndWait()
Returns
Type Description
Task

The task representing waiting operation.

| Improve this Doc View Source

SignalAndWait(CancellationToken)

Signals that a participant has reached the barrier and waits for all other participants to reach the barrier as well.

Declaration
public Task SignalAndWait(CancellationToken token)
Parameters
Type Name Description
CancellationToken token

The token that can be used to cancel the waiting operation.

Returns
Type Description
Task

The task representing waiting operation.

| Improve this Doc View Source

SignalAndWait(TimeSpan)

Signals that a participant has reached the barrier and waits for all other participants to reach the barrier as well.

Declaration
public Task<bool> SignalAndWait(TimeSpan timeout)
Parameters
Type Name Description
TimeSpan timeout

The time to wait for phase completion.

Returns
Type Description
Task<Boolean>

true if all other participants reached the barrier; otherwise, false.

| Improve this Doc View Source

SignalAndWait(TimeSpan, CancellationToken)

Signals that a participant has reached the barrier and waits for all other participants to reach the barrier as well.

Declaration
public Task<bool> SignalAndWait(TimeSpan timeout, CancellationToken token)
Parameters
Type Name Description
TimeSpan timeout

The time to wait for phase completion.

CancellationToken token

The token that can be used to cancel the waiting operation.

Returns
Type Description
Task<Boolean>

true if all other participants reached the barrier; otherwise, false.

| Improve this Doc View Source

Wait(TimeSpan, CancellationToken)

Waits for all other participants to reach the barrier.

Declaration
public Task<bool> Wait(TimeSpan timeout, CancellationToken token)
Parameters
Type Name Description
TimeSpan timeout

The time to wait for phase completion.

CancellationToken token

The token that can be used to cancel the waiting operation.

Returns
Type Description
Task<Boolean>

true if all other participants reached the barrier; otherwise, false.

Explicit Interface Implementations

| Improve this Doc View Source

IAsyncEvent.IsSet

Declaration
bool IAsyncEvent.IsSet { get; }
Returns
Type Description
Boolean
| Improve this Doc View Source

IAsyncEvent.Reset()

Declaration
bool IAsyncEvent.Reset()
Returns
Type Description
Boolean
| Improve this Doc View Source

IAsyncEvent.Signal()

Declaration
bool IAsyncEvent.Signal()
Returns
Type Description
Boolean
| Improve this Doc View Source

ISynchronizer.HasWaiters

Declaration
bool ISynchronizer.HasWaiters { get; }
Returns
Type Description
Boolean

Implements

IAsyncEvent
ISynchronizer
IDisposable

Extension Methods

AsyncEvent.Wait(IAsyncEvent, TimeSpan)
AsyncEvent.Wait(IAsyncEvent, CancellationToken)
AsyncEvent.Wait(IAsyncEvent)
AsyncLockAcquisition.AcquireLockAsync<T>(T, TimeSpan)
AsyncLockAcquisition.AcquireLockAsync<T>(T, CancellationToken)
AsyncLockAcquisition.AcquireReadLockAsync<T>(T, TimeSpan)
AsyncLockAcquisition.AcquireReadLockAsync<T>(T, CancellationToken)
AsyncLockAcquisition.AcquireWriteLockAsync<T>(T, TimeSpan)
AsyncLockAcquisition.AcquireWriteLockAsync<T>(T, CancellationToken)
AsyncLockAcquisition.AcquireUpgradeableReadLockAsync<T>(T, TimeSpan)
AsyncLockAcquisition.AcquireUpgradeableReadLockAsync<T>(T, CancellationToken)
ExpressionBuilder.Const<T>(T)
ObjectExtensions.GetUserData<T>(T)
ObjectExtensions.IsOneOf<T>(T, IEnumerable<T>)
ObjectExtensions.IsOneOf<T>(T, T[])
ObjectExtensions.Decompose<T, R1, R2>(T, Func<T, R1>, Func<T, R2>, out R1, out R2)
ObjectExtensions.Decompose<T, R1, R2>(T, ValueFunc<T, R1>, ValueFunc<T, R2>, out R1, out R2)
ObjectExtensions.Decompose<T, R1, R2>(T, Func<T, R1>, Func<T, R2>)
ObjectExtensions.Decompose<T, R1, R2>(T, ValueFunc<T, R1>, ValueFunc<T, R2>)
LockAcquisition.AcquireReadLock<T>(T)
LockAcquisition.AcquireReadLock<T>(T, TimeSpan)
LockAcquisition.AcquireWriteLock<T>(T)
LockAcquisition.AcquireWriteLock<T>(T, TimeSpan)
LockAcquisition.AcquireUpgradeableReadLock<T>(T)
LockAcquisition.AcquireUpgradeableReadLock<T>(T, TimeSpan)
  • Improve this Doc
  • View Source
Back to top Generated by DocFX