LockType-AtomicLock
1.0.0
dotnet add package LockType-AtomicLock --version 1.0.0
NuGet\Install-Package LockType-AtomicLock -Version 1.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="LockType-AtomicLock" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add LockType-AtomicLock --version 1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: LockType-AtomicLock, 1.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install LockType-AtomicLock as a Cake Addin
#addin nuget:?package=LockType-AtomicLock&version=1.0.0
// Install LockType-AtomicLock as a Cake Tool
#tool nuget:?package=LockType-AtomicLock&version=1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
AtomicLock<T> Class
Overview
The AtomicLock<T>
class is a thread-safe structure designed to encapsulate a value and provide atomic operations on it. This class ensures that operations on the encapsulated value are performed safely in a multithreaded environment, preventing race conditions and ensuring consistency.
Features
- Thread-Safety: Ensures that all operations on the value are thread-safe.
- Atomic Operations: Supports atomic operations like increment (
++
), decrement (--
), and basic comparison operators. - Flexibility: Allows executing custom operations on the value through a provided delegate.
- Easy to Use: Designed with simplicity in mind, offering an intuitive API.
Usage
Instantiation - Example 1
AtomicLock<int> atomicInt = new AtomicLock<int>(initialValue);
Instantiation - Example 2
AtomicLock<int> atomicInt = 0;
Performing Atomic Operations
atomicInt++; // Atomic increment
atomicInt--; // Atomic decrement
// And a lot of other pre-defined operations
// (Not AOT friendly - Use ExecuteOperations instead)
Executing Custom Operations
atomicInt.ExecuteOperation(x => x * 2); // Custom operation
Thread-Safe Value Update
atomicInt.UpdateValue(newValue);
Example code in C#
using LockType;
using static System.Console;
AtomicLock<int> locked = 0;
locked++; // <-- Thread Safe
WriteLine(locked);
locked++; // <-- Thread Safe
WriteLine(locked);
ReadKey(false);
Notes
- The class uses
dynamic
for some operations, which may have performance implications in certain scenarios. - Exception handling is integrated for runtime errors, especially for operations involving
dynamic
. - AOT developers should use ExecuteOperations Method instead of the Atomic Operations.
- Accessing the value by casting it to the original type is possible, but could not be thread safe.
License
This project is licensed under the MIT License.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 is compatible. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETFramework 4.8
- No dependencies.
-
.NETStandard 2.0
- No dependencies.
-
net6.0
- No dependencies.
-
net7.0
- No dependencies.
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.0 | 140 | 1/9/2024 |