Wjybxx.Commons.Concurrent 1.2.0

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

// Install Wjybxx.Commons.Concurrent as a Cake Tool
#tool nuget:?package=Wjybxx.Commons.Concurrent&version=1.2.0                

Concurrent模块

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

C#系统并发库缺陷

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

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

ReleaseNotes

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 net5.0 is compatible.  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 was computed.  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. 
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.2.1 74 11/7/2024
1.2.0 120 9/7/2024
1.1.2 144 8/25/2024 1.1.2 is deprecated because it has critical bugs.
1.1.1 156 8/23/2024 1.1.1 is deprecated because it has critical bugs.
1.1.0 155 8/21/2024 1.1.0 is deprecated because it has critical bugs.
1.1.0-rc3 52 7/31/2024
1.1.0-rc1 74 7/14/2024
1.0.15 115 6/29/2024
1.0.12 129 4/11/2024
1.0.11 122 4/9/2024
1.0.10 128 4/8/2024
1.0.9 130 4/3/2024
1.0.8 128 3/18/2024