一旦我将任务划分为4个独立的任务,并使它们并行运行。是否有可能进一步使每项任务并行运行?(比如,每个任务,每个循环都有很多-可以作为并行代码实现)
发布于 2014-11-03 03:10:25
你当然可以,但它是doesn't guarantee thread safety。
但是,你必须考虑到多种因素。
发布于 2015-06-01 05:36:45
也许您应该重新考虑算法,只保留一个Parallel.For()。在这个链接中描述了原因:http://www.albahari.com/threading/part5.aspx在“外部循环还是内部循环”中:
"Parallel.For和Parallel.ForEach通常在外部循环上工作最好,而不是在内部循环上。这是因为对于前者,您提供了更多的工作来并行化,从而稀释了管理开销。并行内循环和外部循环通常都是不必要的。在下面的示例中,我们通常需要超过100个内核才能从内部并行化中受益“:
Parallel.For (0, 100, i =>
{
Parallel.For (0, 50, j => Foo (i, j)); // Sequential would be better
}); https://stackoverflow.com/questions/26707177
复制相似问题