我收到了以下代码
foreach (var portfolio in portfolios.AsParallel()){ Some Processing ...}
并希望确保在不同核心上并行工作。有什么方法可以确保吗?
我试过
Parallel.ForEach(portfolios,
portfolio =>
{ Some Processing....}
并且可以看到创建和删除了不同的线程,也可以在Parallel Task窗口中看到并行任务但不确定Collection.AsParallel()这也给了我一些不可预知的行为。
有更好的主意吗?
答案 0 :(得分:3)
AsParallel
的要点是你没有。您将它留给CLR,它将决定如何运行和优化它,尽管它很可能会并行运行。
您还需要通过不一致来解释您的意思。您很可能遇到线程和同步问题。任何非线程安全的操作都不是AsParallel
的良好候选者,除非你管理状态的同步。