- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在寻求并行化我的项目中的一些工作,我首先使用了 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/
假设我想创建一个自定义 TaskScheduler,但在其中,如果某些条件不适用,则回退到默认值。我该怎么做? 例如 protected override void QueueTask(Task ta
任务并行库非常棒,在过去的几个月里我经常使用它。然而,有件事确实困扰着我:事实上 TaskScheduler.Current是默认的任务计划程序,而不是 TaskScheduler.Default 。
我有一个从数据库中获取产品的任务,以及操作一些 UI 修改的 ContinueWith 操作,因此我遇到了一个问题,因为任务创建了一个新线程,并且没有执行 UI 修改在 UI 线程中。 我尝试使用此修
我有一个具有多个Dispatcher(又名 GUI 线程、又名消息泵)的应用程序,以确保 GUI 的缓慢且无响应的部分运行,而不会严重影响应用程序的其余部分。我也经常使用 Task。 目前,我的代码可
我要实现的是: 任务调度程序,将任务排入队列并并行运行指定数量,而其他任务则在队列中等待开始。每个任务都有超时,当任务运行时开始计数,如果超过该时间,任务将被取消并抛出 TimeoutExceptio
我有一些使用 ReaderWriterLockSlim 的代码。当某个对象被构造时,我在它上面获取写锁,并在一段时间后处理该对象时释放它。但是,由于这些调用的来源,我不能保证它们会在同一个线程上,这是
我发现不需要声明额外的 TaskScheduler,我可以像这样执行任务: 但是你能帮我解释一下吗,为什么不需要像下面这样的? 最佳答案 通用时间表
我在同一台服务器上有两个 spring boot 应用程序 (1.4.3.RELEASE)。应用程序 A 是一个单体应用程序,其中包含用于处理警报的部分代码,而应用程序 B 是一个仅处理警报的新专用应
在阅读了一些关于 TaskScheduler ( good article here ) 的内容后,发现 TaskScheduler 可以: 安排任务 - 通过使用 QueueTask 方法,在上面的
我有以下使用隐式调度的方法: private async Task FooAsync() { await Something(); DoAnotherThing(); await S
根据我的研究,我了解到以下内容: TaskScheduler.UnobservedTaskException必须等待任务被垃圾回收,然后该任务的未观察到的异常才会冒泡到 UnobservedTaskE
我需要在 Windows Server 2008 上通过 Powershell v2 安排任务。我正在使用 MS PowershellPack 中的 TaskScheduler 模块。 . 可以安排任
上个月我问了以下问题,这导致我学习了 TaskEx.Yield: Can async methods have expensive code before the first 'await'? 但是,
actors 中的异步等待支持 我正在将 actor 库 Akka 移植到 .NET ( https://github.com/rogeralsing/Pigeon )我想在我的 Actor 内部添加
我想打印我创建的任务的特定触发器,如何使用 QT Framework 在 C++ 中执行此操作,最好的方法是什么?另外,创建具有多个任务的动态调度程序并能够检索每个任务信息的最佳方法是什么? 最佳答案
TaskScheduler.Default 不总是保证任务将在池线程上执行吗? 在修复 bug 时,我至少发现了一个没有修复的情况。它可以像这样重现(一个由真实代码制作的人为示例): var tcs
我有自己的 TaskScheduler 实现。它存在的主要原因是它将处理器核心亲和性设置为运行我的任务的线程。 当我以下列方式使用它时: var myTaskSceduler = new MyTask
我正在尝试使用 the following custom task scheduler限制并发网络请求: 我是这样使用它的: const int CONCURRENCY_LEVEL = 2; stat
我正在寻求并行化我的项目中的一些工作,我首先使用了 Parallel.ForEach 并且它同时运行得很好,然后首席开发人员过来说他不太喜欢这个并想改变那个。 然后我决定沿着 TaskFactory
我试图设置一个 cron 来在我的 Windows 服务器上运行一个 php 脚本。该脚本在手动访问时运行良好,但无法通过任务计划运行。 问题是: // Code to fetch stuff fro
我是一名优秀的程序员,十分优秀!