Multithreading_Library 1.3.0
See the version list below for details.
dotnet add package Multithreading_Library --version 1.3.0
NuGet\Install-Package Multithreading_Library -Version 1.3.0
<PackageReference Include="Multithreading_Library" Version="1.3.0" />
paket add Multithreading_Library --version 1.3.0
#r "nuget: Multithreading_Library, 1.3.0"
// Install Multithreading_Library as a Cake Addin #addin nuget:?package=Multithreading_Library&version=1.3.0 // Install Multithreading_Library as a Cake Tool #tool nuget:?package=Multithreading_Library&version=1.3.0
Multithreading_Library
This library provides utilities to handle various multithreading scenarios in .NET applications. It contains the following classes:
OneWriteMultiRead
: This class allows an object to be read from multiple threads at the same time but only updated from one thread at a time. This helps to ensure data integrity when working with shared resources across multiple threads.
// Example usage
OneWrite_MultiRead<decimal> sharedDecimal = new OneWrite_MultiRead<decimal>(100);
/// Reader threads
decimal t = sharedDecimal.Value;
// writer thread
sharedDecimal.Value = VALUE1;
IDLocks
: This class provides locks that are accessible through a dictionary. This allows specific tasks, names, or other entities to be locked individually, enabling finer control over thread synchronization.
// Example usage
IDLocks<int> idLocks = new IDLocks<int>();
var lockObject = idLocks.ObtainLockObject(5);
RequestIDGenerator
this class returns an incremental, threadsafe id which can be used to identify requests. EG for a websocket. The function rolls over to 0 at int.MaxValue
// Example usage
RequestIDGenerator idGenerator = new RequestIDGenerator();
int id = idGenerator.GetNextRequestId()
AsyncHelper
: This class provides utilities to run an asynchronous Task and wait for the result in a synchronous method. It should be used with caution as it can lead to potential deadlocks. Whenever possible, prefer keeping async code all the way up the call stack.
// Example usage
int parameter = 5;
int result = AsyncHelper.RunSync(async () => await SomeAsyncMethod(parameter));
Caching
: The library includes examples of lightweight caching mechanisms.LazyCache\<T\>
: A simple cache that holds a value for a specified timespan. After the timespan expires, it returns null or default.// Example usage LazyCache<int?> numberCache = new (TimeSpan.FromMinutes(5)); // values are valid for 5 Minutes numberCache.Value = 42; // Setting a value int? cachedNumber = numberCache.Value; // Retrieving the value if (cachedNumber == null) // set new value if cache has expired cachedNumber = FetchReason("Life");
LazyCacheDictionary\<TKey, TValue\>
: A thread-safe, lazy-loading cache dictionary with expiration for each key. It supports automatic cleanup of expired entries.// Example usage // individual item validity time = 5 Minutes // cache cleanup interval = 1 Hour LazyCacheDictionary<string, int?> dictionaryCache = new (TimeSpan.FromMinutes(5), TimeSpan.FromHours(1)); dictionaryCache.Set("key1", 100); // Adding a value int? value = dictionaryCache.Get("key1"); // Retrieving a value if (value == null) // set new value if cache has expired dictionaryCache.Set("Life", 42);
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | 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. |
-
net6.0
- No dependencies.
-
net7.0
- No dependencies.
-
net8.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Multithreading_Library:
Package | Downloads |
---|---|
Chia-Client-API
CHIA-RPC is a C# Nuget library that allows developers to easily communicate with the Chia client. It provides a wrapper for making requests, sending transactions, and minting, making it a versatile tool for interacting with the Chia blockchain. With CHIA-RPC, you can easily integrate Chia functionality into your C# projects. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
2.4.4 | 63 | 11/13/2024 |
2.4.2 | 106 | 7/16/2024 |
2.4.1 | 138 | 4/10/2024 |
2.4.0 | 101 | 4/9/2024 |
2.3.0 | 117 | 4/8/2024 |
2.2.0 | 117 | 4/4/2024 |
2.1.1 | 118 | 4/4/2024 |
2.1.0 | 114 | 4/4/2024 |
2.0.0 | 113 | 3/27/2024 |
1.9.0 | 134 | 3/15/2024 |
1.8.0 | 136 | 1/19/2024 |
1.7.0 | 103 | 1/19/2024 |
1.6.0 | 150 | 1/4/2024 |
1.5.0 | 147 | 12/13/2023 |
1.4.0 | 113 | 12/12/2023 |
1.3.0 | 136 | 12/5/2023 |
1.2.1 | 213 | 12/1/2023 |
1.2.0 | 121 | 12/1/2023 |
1.1.1 | 167 | 7/4/2023 |
1.1.0 | 153 | 7/4/2023 |
1.0.1 | 283 | 1/25/2023 |
1.0.0 | 298 | 1/9/2023 |
1.3.0
- added LazyCache, a minimal cache implementation
- added LazyCacheDictionary, a minimal caching solution for dictionary values
1.2.1
- Added RequestIDGenerator to obtain short term unique identifiers
- added .Net 8.0