有一组长时间运行的离散任务:从文本文件中解析成千上万行、水合为对象、操作和持久化。
如果我在 Java 中实现它,我想我可能会为文件中的每一行或每 X 行(即块)中的任务添加一个新任务到 Executor。
对于我正在使用的.Net,我不太确定。我怀疑 CCR 在这里可能是合适的,但我对它不够熟悉,这就是我提出这个问题的原因。
CCR 能否以与 Java Executors 等效的方式运行,或者还有其他可用的功能吗?
谢谢
有一组长时间运行的离散任务:从文本文件中解析成千上万行、水合为对象、操作和持久化。
如果我在 Java 中实现它,我想我可能会为文件中的每一行或每 X 行(即块)中的任务添加一个新任务到 Executor。
对于我正在使用的.Net,我不太确定。我怀疑 CCR 在这里可能是合适的,但我对它不够熟悉,这就是我提出这个问题的原因。
CCR 能否以与 Java Executors 等效的方式运行,或者还有其他可用的功能吗?
谢谢
您可能想查看Task Parallel Library。
async
从 C# 5 开始,这是使用andawait
关键字内置到语言中的。
也许这是相关的:设计:探索的任务并行库。请参阅第 10-4 集第 6 集:并行扩展作为快速介绍。
对于较旧的基于线程的方法,可以使用ThreadPool进行池化。
如果你要问一大群 .NET 人员,什么最接近等同于 Java Executors,描述 Java Executors 的显着特征可能没有什么坏处。知道你答案的人可能并不像你对 .NET 那样熟悉 Java。
也就是说,如果已经提到的任务并行库对您的需求来说太过分了,或者您不想等待 .NET 4.0,那么ThreadPool.QueueUserWorkItem()可能就是您要寻找的。
BackgroundWorker 类可能是您正在寻找的。顾名思义,它允许您运行后台任务、自动管理池和状态更新事件。
对于任何寻求更现代解决方案的人(就像我一样),请查看EventLoopScheduler类。