首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >并行码内并行

并行码内并行
EN

Stack Overflow用户
提问于 2014-11-03 03:04:03
回答 2查看 337关注 0票数 1

一旦我将任务划分为4个独立的任务,并使它们并行运行。是否有可能进一步使每项任务并行运行?(比如,每个任务,每个循环都有很多-可以作为并行代码实现)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-03 03:10:25

你当然可以,但它是doesn't guarantee thread safety

但是,你必须考虑到多种因素。

  • 迭代的大小(越多越好)
  • 您的CPU可以处理多少并发线程?
  • 处理器中的核心数量 Parallel.For(0,length1,i => { Parallel.For(0,length2,j => { Console.WriteLine(i * j);});};
票数 0
EN

Stack Overflow用户

发布于 2015-06-01 05:36:45

也许您应该重新考虑算法,只保留一个Parallel.For()。在这个链接中描述了原因:http://www.albahari.com/threading/part5.aspx在“外部循环还是内部循环”中:

"Parallel.For和Parallel.ForEach通常在外部循环上工作最好,而不是在内部循环上。这是因为对于前者,您提供了更多的工作来并行化,从而稀释了管理开销。并行内循环和外部循环通常都是不必要的。在下面的示例中,我们通常需要超过100个内核才能从内部并行化中受益“:

代码语言:javascript
复制
Parallel.For (0, 100, i =>
{
    Parallel.For (0, 50, j => Foo (i, j));   // Sequential would be better
});   
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26707177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档