Edit

Share via


AsyncPipeline Class

Definition

A helper utility class that allows to control the rate of generation of asynchronous activities. Maintains a pipeline of asynchronous operations up to a given maximal capacity and blocks the calling thread if the pipeline gets too deep before enqueued operations are not finished. Effectively adds a back-pressure to the caller. This is mainly usefull for stress-testing grains under controlled load and should never be used from within a grain code!

public class AsyncPipeline : Orleans.Runtime.IPipeline
type AsyncPipeline = class
    interface IPipeline
Public Class AsyncPipeline
Implements IPipeline
Inheritance
AsyncPipeline
Implements

Constructors

Name Description
AsyncPipeline()

Constructs an empty AsyncPipeline with capacity equal to the DefaultCapacity.

AsyncPipeline(Int32)

Constructs an empty AsyncPipeline with a given capacity.

Fields

Name Description
DEFAULT_CAPACITY

The Default Capacity of this AsyncPipeline. Equals to 10.

Properties

Name Description
Capacity

The maximal number of async in-flight operations that can be enqueued into this async pipeline.

Count

The number of items currently enqueued into this async pipeline.

Methods

Name Description
Add(Task)

Adds a new task to this AsyncPipeline.

AddRange(IEnumerable<Task>)

Adds a collection of tasks to this AsyncPipeline.

AddRange<T>(IEnumerable<Task<T>>)

Adds a collection of tasks to this AsyncPipeline.

Wait()

Waits until all currently queued asynchronous operations are done. Blocks the calling thread.

Applies to