是否有.Net等效于java.util.concurrent.Executor?

时间:2009-05-29 20:35:26

标签: java .net multithreading concurrency ccr

拥有一组长期独立的任务:从文本文件中解析数千行,保存为对象,操作和持久化。

如果我在Java中实现它,我想我可能会为每个X行(即块)中的文件或任务中的每一行向Executor添加一个新任务。

对于.Net,这是我正在使用的,我不太确定。我怀疑可能CCR在这里可能是合适的,但我对它不够熟悉,这就是我提出这个问题的原因。

CCR能否以与Java Executors等效的方式运行,还是有其他可用的东西?

由于

5 个答案:

答案 0 :(得分:5)

您可能需要查看Task Parallel Library

从C#5开始,使用asyncawait关键字将其内置到语言中。

答案 1 :(得分:2)

如果您要向一群.NET人员询问什么是最接近Java Excecutors的东西,那么描述Java Executors的区别特征可能并没什么坏处。知道你的答案的人可能不再熟悉Java了。

也就是说,如果已经提到的任务并行库满足您的需求,或者您不想等待.NET 4.0,那么ThreadPool.QueueUserWorkItem()可能就是您所需要的。

答案 2 :(得分:1)

也许这是相关的:Design: Task Parallel Library explored。 请参阅10-4 Episode 6: Parallel Extensions作为快速介绍。

对于较旧的基于线程的方法,有ThreadPool用于汇集。

答案 3 :(得分:0)

BackgroundWorker类可能正是您正在寻找的。顾名思义,它允许您运行后台任务,自动管理池和状态更新事件。

答案 4 :(得分:0)

对于寻找更现代解决方案的人(就像我一样),请查看EventLoopScheduler课程。