多个短任务

时间:2017-12-08 11:12:18

标签: c# task-parallel-library

处理多个短时任务的最佳方法是什么?

我有一个案例需要解决很多短期/廉价Action的问题。数字可以从8到100变化,每个动作所需的时间在0.00x ms到1 ms之间。因为它是用于UI的,所以工作应该以60fps完成。但我也会在Xamarin和低端手机上运行代码,因此无法始终达到目标,这就是我使用Task的原因。 实际上我正在使用here中的自定义TaskScheduler。

现在,问题是,如何处理所有这些行动:

Task.Run / Task.Factory.StartNew有多贵?

ConcurrentQueue中收集多个操作并从最大值开始收集是否会更好? 4个任务(在4核CPU上)将解决while循环中的所有操作,直到队列为空?

TaskScheduler管理的多个任务比单个(或几个)任务中的多个操作要昂贵得多吗?

我想利用现有的async / await TPL结构,但它对许多和非常小/短/便宜的动作也有好处吗?

1 个答案:

答案 0 :(得分:1)

最好的方法是使用Parallel.Invoke()。这比创建任务的开销更低。它还将自动确定要同时运行的操作数,具体取决于当前的硬件。

有关详细信息,请参阅documentation

我已尝试过数千个任务和Parallel.Invoke更快。