Punchclock 3.4.143
dotnet add package Punchclock --version 3.4.143
NuGet\Install-Package Punchclock -Version 3.4.143
此命令旨在在 Visual Studio 的包管理器控制台中使用,因为它使用 NuGet 模块的 Install-Package 版本。
<PackageReference Include="Punchclock" Version="3.4.143" />
对于支持 PackageReference 的项目,将此 XML 节点复制到项目文件中以引用包。
paket add Punchclock --version 3.4.143
NuGet 团队不提供对此客户端的支持。请联系它的 维护者 以获得支持。
#r "nuget: Punchclock, 3.4.143"
#r 指令可用于 F# Interactive 和多语言笔记本。将其复制到交互式工具或脚本的源代码中,以引用包。
// Install Punchclock as a Cake Addin #addin nuget:?package=Punchclock&version=3.4.143 // Install Punchclock as a Cake Tool #tool nuget:?package=Punchclock&version=3.4.143
NuGet 团队不提供对此客户端的支持。请联系它的 维护者 以获得支持。
<br /> <a href="https://github.com/reactiveui/punchclock"> <img width="120" heigth="120" src="https://raw.githubusercontent.com/reactiveui/styleguide/master/logo_punchclock/main.png"> </a>
Punchclock:一个用于管理并发操作库
Punchclock 是由 Fusillade 使用的低级调度和优先级库,用于编排挂起的并发操作。
这是什么意思呢?
好吧,你们的手机应用很酷,你们有 async/await。很棒!发网络请求太容易了,为什么不一直这么做呢?在你用户对你应用的怠慢用一颗星星表示不满后,你发现自己正在同时发出 非常多 请求。
然后,你尝试手动管理减少请求数,但结果变成了乱糟糟的一团,因为你的应用程序的不同部分互相渗透以试图弄清楚谁在做什么。让我们一起找出更好的方法。
说了这么多,给我举个例子吧
var wc = new WebClient();
var opQueue = new OperationQueue(2 /*at a time*/);
// Download a bunch of images
var foo = opQueue.Enqueue(1,
() => wc.DownloadFile("https://example.com/foo.jpg", "foo.jpg"));
var bar = opQueue.Enqueue(1,
() => wc.DownloadFile("https://example.com/bar.jpg", "bar.jpg"));
var baz = opQueue.Enqueue(1,
() => wc.DownloadFile("https://example.com/baz.jpg", "baz.jpg"));
var bamf = opQueue.Enqueue(1,
() => wc.DownloadFile("https://example.com/bamf.jpg", "bamf.jpg"));
// We'll be downloading the images two at a time, even though we started
// them all at once
await Task.WaitAll(foo, bar, baz, bamf);
现在,在应用程序的完全不同的部分,如果你需要立即得到某物,你可以通过优先级来指定它
// This file is super important, we don't care if it cuts in line in front
// of some images or other stuff
var wc = new WebClient();
await opQueue.Enqueue(10 /* It's Important */,
() => wc.DownloadFileTaskAsync("http://example.com/cool.txt", "./cool.txt"));
这个库还能做什么?
- 通过 CancellationTokens 或 Observables 进行取消
- 通过键来确保某些操作不会同时运行
- 队列暂停/恢复
贡献
Punchclock 是在 OSI 批准的开源许可证下开发的,这使得它可以自由使用和分发,包括商业用途。由于我们采用开放集体模式进行资金和透明度,我们可以将支持和资金流向我们的贡献者和社区。我们热爱参与此项目的每一个人,并且我们很高兴你能加入我们,尤其是如果你是初学者或者以前从未为开源项目做出过贡献。
那么,为即将加入我们这个可爱的人敬一杯——这就是你可以支持我们的方式
- 在 StackOverflow 上回答问题
- 传授知识和教授新一代的开发者
- 在你认为合适的地方提交文档更新或发现其不足。
- 向代码库做出贡献。
产品 | 版本 兼容的和额外的计算目标框架版本。 |
---|---|
.NET | net5.0 已计算。 net5.0-windows 已计算。 net6.0 已计算。 net6.0-android 已计算。 net6.0-ios 已计算。 net6.0-maccatalyst 已计算。 net6.0-macos 已计算。 net6.0-tvos 已计算。 net6.0-windows 已计算。 net7.0 已计算。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 已计算。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。 |
.NET Core | netcoreapp2.0 已计算。 netcoreapp2.1 已计算。 netcoreapp2.2 已计算。 netcoreapp3.0 已计算。 netcoreapp3.1 已计算。 |
.NET 标准版 | netstandard2.0 兼容。 netstandard2.1 已计算。 |
.NET 框架 | net461 已计算。 net462 已计算。 net463 已计算。 net47 已计算。 net471 已计算。 net472 已计算。 net48 已计算。 net481 已计算。 |
MonoAndroid | monoandroid 已计算。 |
MonoMac | monomac 已计算。 |
MonoTouch | monotouch 已计算。 |
Tizen | tizen40 已计算。 tizen60 已计算。 |
Xamarin.iOS | xamarinios 已计算。 |
Xamarin.Mac | xamarinmac 已计算。 |
Xamarin.TVOS | xamarintvos 已计算。 |
Xamarin.WatchOS | xamarinwatchos 已计算。 |
-
.NETStandard 2.0
- System.Reactive (>= 6.0.0)
NuGet 包 (2)
显示依赖 Punchclock 的前 2 个 NuGet 包
包 | 下载 |
---|---|
fusillade 包描述 |
|
akavache.http
基于 Akavache 的 HTTP 请求缓存的 HttpClient |
GitHub 存储库 (5)
显示依赖 Punchclock 的最受欢迎的前 5 个 GitHub 存储库
存储库 | 星标 |
---|---|
HMBSbige/BilibiliLiveRecordDownLoader
Bilibili 直播录制
|
|
reactiveui/Fusillade
一个针对移动开发的见解丰富的 HTTP 库
|
|
flagbug/Espera
Espera是一款播放器,可播放您的音乐、YouTube视频、SoundCloud歌曲,并具有特殊的“派对模式”。
|
|
Clancey/gMusic
这是一个多平台音乐播放器。
|
|
HTBox/crisischeckin
危机检查人类工具箱仓库
|
版本 | 下载 | 最后更新 |
---|---|---|
3.4.143 | 1,849 | 5/2/2024 |
3.4.95-g63ed44e8a1 | 158 | 11/24/2022 |
3.4.3 | 119,895 | 2/1/2021 |
3.4.1 | 603 | 1/22/2021 |
3.3.2 | 37,660 | 10/23/2020 |
3.3.1-ge8d6934868 | 319 | 10/23/2020 |
3.2.7 | 3,998 | 7/28/2020 |
3.2.1 | 42,313 | 4/28/2020 |
3.1.1 | 101,147 | 3/21/2019 |
3.0.17 | 7,747 | 2/5/2019 |
2.1.0 | 55,871 | 9/3/2017 |
2.0.0 | 19,374 | 11/10/2016 |
1.2.0 | 100,055 | 10/10/2014 |
1.1.1 | 95,528 | 5/1/2014 |
1.1.0 | 1,959 | 12/5/2013 |
1.0.1.1 | 1,404 | 11/12/2013 |
1.0.0 | 1,280 | 10/9/2013 |