Releases: neosmart/AsyncLock
AsyncLock 3.3.0-preview1
This release of AsyncLock
- addresses a potential deadlock when attempting to recursively acquire the lock in back-to-back scenarios (#18)
- allows work to internally continue on different threads after explicit context switching points (#17, #19)
- addresses a lock corruption issue when using
TryLockAsync()
with a timeout ofTimeSpan.Zero
- reworks some lock acquisition internals to ensure locks are acquired in a more timely fashion after racing with
Dispose()
calls in another thread
Download on Nuget.org: https://www.nuget.org/packages/NeoSmart.AsyncLock/3.3.0-preview1
Or install manually:
Install-Package NeoSmart.AsyncLock -Version 3.3.0-preview1
AsyncLock 3.2.1
This point release adds strong name signing and bundles the README as part of the nuget package, making it viewable on nuget.org
Download on Nuget.org: https://www.nuget.org/packages/NeoSmart.AsyncLock/
Or install manually:
Install-Package NeoSmart.AsyncLock -Version 3.2.1
NeoSmart.AsyncLock 3.2.0
This update brings a highly requested feature: the ability to to atomically attempt to obtain a lock or return early otherwise. The new interface is available as .TryLock()
and .TryLockAsync()
for both synchronous and asynchronous usage. The API is resistant to misuse by executing the critical path in a closure w/ the lock obtained, so there's no need to worry about sometimes disposing the returned lock and sometimes not.
A pull request from first-time contributor Caleb Frederickson (@Stroniax) adds the ability to use a CancellationToken
to time out synchronous requests (previously a CancellationToken
parameter was only accepted for the asynchronous locking methods).
The updated package has been published to NuGet as NeoSmart.AsyncLock
and may be installed as with any other package; for Visual Studio users that would look like this:
Install-Package NeoSmart.AsyncLock -Version 3.2.0