gpt4 book ai didi

c# - BlockingCollection 和 TaskScheduler 的区别

转载 作者:行者123 更新时间:2023-12-02 02:39:38 29 4
gpt4 key购买 nike

我正在寻求并行化我的项目中的一些工作,我首先使用了 Parallel.ForEach 并且它同时运行得很好,然后首席开发人员过来说他不太喜欢这个并想改变那个。

然后我决定沿着 TaskFactory 做一个 TaskScheduler 来批处理工作,工作完美且快速,他再次不喜欢它,觉得它太过分了而且太旧了,他说我应该使用 BlockingCollection 和 Consumer/Producer 模式,他开始实现这一点,但我看不出它比 TaskScheduler 有什么优势。也许是为了维护问题,或者是为了将复杂性保持在可接受的范围内,我不知道。

这里有一些上下文,工作是从内存中转换数据,数据不需要有同步上下文,每个操作都可以单独进行,没有 IO 边界,所有代码都是线程安全的。

那么,并行工作的 BlockingCollection 和 TaskScheduler 之间有什么区别?

最佳答案

So, what the differences between the BlockingCollection and TaskScheduler for a parallel work ?

正如评论所说,他们就像夜和橘子一样不同。 BlockingCollection<T>是您在命名空间中找到的集合 System.Collections.Concurrent .基本上由System.Collections.Generic的所有内容组成他们可以通过使用 lock statement 完全避免竞争条件在每个明智的地方。

如果你在这个之外有一个你想要的集合,他们无法从内部完全证明这个集合不符合 Race Conditions。只有使用这些集合的代码才能避免竞争条件(Array 和 List<T> 没有并发对应项的可能原因)。

he didn't really like this

again he didn't like it and find it overkill and old, he said I should use BlockingCollection with Consumer/Producer pattern

那么两者之间的区别并不重要。选择权在你手中。

您(还)不知道其他地方的要求。或者“老狗不学新把戏”适用。

关于c# - BlockingCollection 和 TaskScheduler 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60615072/

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