Skip to content

Instantly share code, notes, and snippets.

@dfederm
dfederm / DemoWorkQueue.cs
Last active December 4, 2023 05:02
Limited Parallelism Work Queue
const int Parallelism = 3;
const int NumItems = 20;
TimeSpan ProcessingTime = TimeSpan.FromMilliseconds(100);
Console.WriteLine("WorkQueue starting");
await using (WorkQueue workQueue1 = new(Parallelism))
{
List<Task> tasks = new(NumItems);
for (int i = 0; i < NumItems; i++)
@dfederm
dfederm / AsyncMutex.cs
Created November 3, 2022 06:44
AsyncMutex
public sealed class AsyncMutex : IAsyncDisposable
{
private readonly string _name;
private Task? _mutexTask;
private ManualResetEventSlim? _releaseEvent;
private CancellationTokenSource? _cancellationTokenSource;
public AsyncMutex(string name)
{
_name = name;