# Sample: synchronization in async code

AsyncLock is mutual exclusion you can hold across an await, built on SemaphoreSlim. The Releaser is a struct
so acquiring does not allocate, and disposing releases on every path.

The tests cover mutual exclusion, release on exception, the lack of reentrancy, and why System.Threading.Lock
is not an async lock.

    cd AsyncLocking.Tests
    dotnet run -c Release
