gpt4 book ai didi

c# - 具有较低优先级的 PLINQ AsParallel()?

转载 作者:太空狗 更新时间:2023-10-29 21:36:27 25 4
gpt4 key购买 nike

是否可以运行我的一些 PLINQ AsParallel() - 优先级低于其他查询的查询?(或者一些比其他优先级更高的)这对 PLinq 是否可行,还是我必须避免使用 PLINQ 并自己完成所有工作?

编辑/更新:

是否可以调用

Thread.Sleep(0)

当我想归档一个较低优先级时在并行执行的方法中?或者这是一个非常糟糕的做法/技巧?

最佳答案

不幸的是,这在 PLINQ 中不能直接实现。

您可以通过创建自定义 TaskScheduler 在任务并行库的大部分其余部分中执行此操作.这将允许您在使用 Parallel.ForForEach 时拥有自定义“优先级”。

但是,PLINQ 并未提供自定义 TaskScheduler 的能力,因为 PLINQ 需要来自 TaskScheduler 的非常严格的保证,并且担心公开这一点会带来很大的问题。


EDIT/UPDATE:

Would it be possible to call

Thread.Sleep(0)

这会“降低”优先级,但不幸的是,它有自己的问题,尤其是与 PLINQ 结合使用时。这可能会导致 ThreadPool 中的线程饥饿,因为您将在 ThreadPool 线程上“休眠”。

此外,这还有一个根本问题 - PLINQ 旨在处理查询,而不是为处理 而设计。引入逻辑代码来控制流结构确实违背了 PLINQ 背后的理论,并且可能会导致您意想不到的性能影响,尤其是在您使用默认分区的情况下。

关于c# - 具有较低优先级的 PLINQ AsParallel()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5197550/

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