Punchclock 3.4.143
dotnet add package Punchclock --version 3.4.143
NuGet\Install-Package Punchclock -Version 3.4.143
<PackageReference Include="Punchclock" Version="3.4.143" />
paket add Punchclock --version 3.4.143
#r "nuget: Punchclock, 3.4.143"
// 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
<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,太棒了! issuance 网络请求很方便,为什么不一直这么做呢?在你看到你的用户对你的应用程序慢吞吞的 app 给你一:star2:,你发现你同时执行了 过多 的请求。
然后,你尝试手动管理发出较少的请求,当你的应用程序的不同部分相互尝试了解谁在做些什么时,它会变得一团糟。让我们找到更好的方法。
说了这么多,给我个例子
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 Standard | netstandard2.0 已兼容。 netstandard2.1 已计算。 |
.NET Framework | 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 的基于 HttpClient 的 HTTP 请求缓存 |
GitHub 仓库 (5)
显示对 Punchclock 依赖的前 5 个流行 GitHub 仓库
仓库 | 星标 |
---|---|
HMBSbige/BilibiliLiveRecordDownLoader
Bilibili 直播录制
|
|
reactiveui/Fusillade
一个针对移动开发的意见库 HTTP 库
|
|
flagbug/Espera
Espera是一款媒体播放器,可以播放您的音乐、YouTube视频、SoundCloud歌曲,并具有特殊的“派对模式”。
|
|
Clancey/gMusic
这是一个多平台音乐播放器。
|
|
HTBox/crisischeckin
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 |