DotNext.Threading by .NET Foundation and Contributors

<PackageReference Include="DotNext.Threading" Version="5.11.0" />

 TaskQueue<T>

public class TaskQueue<T> : IAsyncEnumerable<T>, IResettable where T : Task
Represents a queue of scheduled tasks.
public bool CanEnqueue { get; }

Gets a value indicating that the queue has free space to place a task.

public T HeadTask { get; }

Gets a head of this queue.

public TaskQueue(int capacity)

Initializes a new empty queue.

public void Clear()

Clears the queue.

public ValueTask<T> DequeueAsync(CancellationToken token = default)

Dequeues the task asynchronously.

public ValueTask EnqueueAsync(T task, CancellationToken token = default)

Enqueues the task.

Ensures that the queue has free space to enqueue a task.

Gets consuming enumerator over tasks in the queue.

public bool TryDequeue(out T task)

Tries to dequeue the completed task.

public ValueTask<T> TryDequeueAsync(CancellationToken token = default)

Tries to dequeue the completed task.

public bool TryEnqueue(T task)

Tries to enqueue the task.