gpt4 book ai didi

c# - Rx 扩展 : Where is Parallel. ForEach?

转载 作者:太空狗 更新时间:2023-10-29 18:03:09 25 4
gpt4 key购买 nike

我有一段使用 Parallel.ForEach 的代码,可能基于旧版本的 Rx 扩展或任务并行库。我安装了当前版本的 Rx 扩展,但找不到 Parallel.ForEach。我没有使用库中任何其他花哨的东西,只是想像这样并行处理一些数据:

Parallel.ForEach(records, ProcessRecord);

我找到了 this question ,但我不想依赖旧版本的 Rx。但是我无法为 Rx 找到类似的东西,那么使用当前 Rx 版本的当前最直接的方法是什么?该项目正在使用 .NET 3.5。

最佳答案

如果你有 Rx,就不需要做所有这些愚蠢的事情了:

records.ToObservable()
.SelectMany(x => Observable.Start(() => ProcessRecord(x), Scheduler.ThreadPoolScheduler))
.ToList()
.First();

(或者,如果您希望以效率为代价维护项目的顺序):

records.ToObservable()
.Select(x => Observable.Start(() => ProcessRecord(x), Scheduler.ThreadPoolScheduler))
.Concat()
.ToList()
.First();

或者如果你想限制同时有多少项目:

records.ToObservable()
.Select(x => Observable.Defer(() => Observable.Start(() => ProcessRecord(x), Scheduler.ThreadPoolScheduler)))
.Merge(5 /* at a time */)
.ToList()
.First();

关于c# - Rx 扩展 : Where is Parallel. ForEach?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8558835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com