Wjybxx.Commons.Concurrent 1.3.0-rc2

This is a prerelease version of Wjybxx.Commons.Concurrent.
There is a newer version of this package available.
See the version list below for details.
dotnet add package Wjybxx.Commons.Concurrent --version 1.3.0-rc2
                    
NuGet\Install-Package Wjybxx.Commons.Concurrent -Version 1.3.0-rc2
                    
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="Wjybxx.Commons.Concurrent" Version="1.3.0-rc2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Wjybxx.Commons.Concurrent" Version="1.3.0-rc2" />
                    
Directory.Packages.props
<PackageReference Include="Wjybxx.Commons.Concurrent" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Wjybxx.Commons.Concurrent --version 1.3.0-rc2
                    
#r "nuget: Wjybxx.Commons.Concurrent, 1.3.0-rc2"
                    
#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.
#:package Wjybxx.Commons.Concurrent@1.3.0-rc2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Wjybxx.Commons.Concurrent&version=1.3.0-rc2&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Wjybxx.Commons.Concurrent&version=1.3.0-rc2&prerelease
                    
Install as a Cake Tool

Concurrent模块

  1. 提供了Java的Executor和Future框架,并提供了对应的await语法支持。
  2. 提供了基于Disruptor的高性能EventLoop实现。
  3. 提供了ValueFutureTask -- 类比系统库的ValueTask。

版本号同步

注意:Wjybxx.Commons.Core,Wjybxx.Commons.Inject,Wjybxx.Commons.Concurrent 三个程序集的版本号总是保持一致,任一程序集修改,其它程序集版本号也会修改。

C#系统并发库缺陷

个人使用C#系统库有几点很难受:

  1. 系统库的Task其实是Future,这个名字的误导性很强,概念混淆。
  2. await语法不支持显式传参,回调线程是根据ThreadLocal的【同步上下文】(SyncContext)确定的;await还会隐式捕获【执行上下文】(ExecutionContext);
  3. await隐式捕获上下文,导致的结果是:简单的问题更加简单,复杂的问题更加复杂
  4. Task不支持死锁检测
  5. TaskCompletionSource泛型类和非泛型类之间是非继承的,我们确实统一的Api获取结果和取消任务。

ReleaseNotes

1.3.0

  1. EventLoop模块化,大幅增强DisruptorEventLoop
  2. IFuture取消对上下文的类型约束,默认为object。
  3. ValueFuture{T}增加装箱支持,await可抑制异常抛出 -- IFuture亦支持。
  4. ValueFuture的异常传递优化,避免频繁Catch再恢复。
  5. ValueFutureIFuture时保留工作线程,帮助死锁检测。
  6. PromiseTaskSchedulePromiseTask加入池化逻辑。
  7. CancelTokenSource监听优化,监听节点Completion池化。
  8. SchedulePromiseTask周期性任务支持通过异常返回结果。

1.2.1

升级commons.core依赖

1.2.0

C#的异常派发机制和java不同,之前的future异常处理是按照java写的,导致异步任务的异常信息堆栈丢失。

1.1.1 ~ 1.1.2

  1. DisruptorEventLoop适配Disruptor模块的等待超时修改。
  2. fix ValueFuture的await错误。
  3. 增加 GlobalEventLoopManualResetPromise
Product 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 was computed.  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.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Wjybxx.Commons.Concurrent:

Package Downloads
Wjybxx.BTree.Core

BTree-非典型的高性能行为树实现

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.5.0 0 10/8/2025
1.5.0-rc2 154 6/29/2025
1.5.0-rc1 180 6/14/2025
1.4.2 182 5/25/2025
1.4.1 96 5/24/2025
1.4.0 149 5/23/2025
1.4.0-rc2 157 5/19/2025
1.4.0-rc1 114 5/18/2025
1.3.0-rc2 239 5/15/2025
1.3.0-rc1 165 5/6/2025
1.2.1 137 11/7/2024
1.2.0 176 9/7/2024
1.1.2 204 8/25/2024 1.1.2 is deprecated because it has critical bugs.
1.1.1 214 8/23/2024 1.1.1 is deprecated because it has critical bugs.
1.1.0 210 8/21/2024 1.1.0 is deprecated because it has critical bugs.
1.1.0-rc3 85 7/31/2024
1.1.0-rc1 114 7/14/2024
1.0.15 159 6/29/2024
1.0.12 166 4/11/2024
1.0.11 165 4/9/2024
1.0.10 172 4/8/2024
1.0.9 178 4/3/2024
1.0.8 152 3/18/2024