Wjybxx.Commons.Concurrent 1.4.2

There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package Wjybxx.Commons.Concurrent --version 1.4.2
                    
NuGet\Install-Package Wjybxx.Commons.Concurrent -Version 1.4.2
                    
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.4.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Wjybxx.Commons.Concurrent" Version="1.4.2" />
                    
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.4.2
                    
#r "nuget: Wjybxx.Commons.Concurrent, 1.4.2"
                    
#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.4.2
                    
#: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.4.2
                    
Install as a Cake Addin
#tool nuget:?package=Wjybxx.Commons.Concurrent&version=1.4.2
                    
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.4.0

  1. 取消令牌相关接口挪至Commons.Core程序集,使得行为树程序集可实现ICancelToken
  2. 取消令牌监听器管理优化,及时从监听器列表删除被取消的回调,避免内存泄漏问题。

1.3.x

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

PS: 1.3.x未发布正式版,因为Commons.Core这期间升级了版本。

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

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.5.0-rc2 153 6/29/2025
1.5.0-rc1 168 6/14/2025
1.4.2 171 5/25/2025
1.4.1 86 5/24/2025
1.4.0 138 5/23/2025
1.4.0-rc2 157 5/19/2025
1.4.0-rc1 113 5/18/2025
1.3.0-rc2 229 5/15/2025
1.3.0-rc1 165 5/6/2025
1.2.1 137 11/7/2024
1.2.0 165 9/7/2024
1.1.2 193 8/25/2024 1.1.2 is deprecated because it has critical bugs.
1.1.1 204 8/23/2024 1.1.1 is deprecated because it has critical bugs.
1.1.0 200 8/21/2024 1.1.0 is deprecated because it has critical bugs.
1.1.0-rc3 84 7/31/2024
1.1.0-rc1 104 7/14/2024
1.0.15 149 6/29/2024
1.0.12 166 4/11/2024
1.0.11 155 4/9/2024
1.0.10 162 4/8/2024
1.0.9 168 4/3/2024
1.0.8 151 3/18/2024