读书频道 > 网站 > 网页设计 > C#并行编程高级教程:精通.NET 4 Parallel Extension
1.6 创建成功的基于任务的设计
12-07-08    叶孤城
收藏    我要投稿   
本书旨在帮助有经验的C#开发人员能够利用.NET Framework 4中引入的Parallel Extensions,将现代微处理器中的多核处理能力转换为应用程序的性能。无论您是刚刚开始从老的多线程模型开始转换,还是已经有过一些...立即去当当网订购
有时候,必须对现有的解决方案进行优化才能够充分利用并行化的优势。在这些情况下,您必须理解现有的串行设计,或者理解提供了有限可扩展性的并行化算法,然后再对现有设计进行重构,从而使其获得性能提升,而且不会引入问题或产生不同的结果。您既可以取问题的一小部分,或者也可以考虑整个问题,并创建出一个基于任务的设计,然后就可以引入并行化了。在设计新解决方案的时候也可以采取同样的技术。
 
遵循以下的步骤就可以创建出成功的基于任务的设计:
 
(1) 将每个问题分解为很多子问题,完全不要去考虑顺序执行。
 
(2) 将每个子问题想象为下面三类中的一类:
 
● 能够以并行的方式进行处理的数据——对数据进行分解以实现并行化。
 
● 需要很多任务,而且能够以某种复杂的并行化进行处理的数据流——对数据和任务进行分解以实现并行化。
 
● 可以并行运行的任务——对任务进行分解以实现并行化。
 
(3) 将设计组织为能够表达并行化的形式。
 
(4) 考虑将不同子问题连接起来的任务的必要性。尽可能地避免依赖性。
 
(5) 在进行设计的时候,心里要想着并发和潜在的并行化。
 
(6) 分析并行化的问题的执行计划,考虑当前的多核微处理器和未来的架构。在设计的时候要准备好更高的可扩展性。
 
(7) 尽可能减少临界区。
 
(8) 尽可能通过基于任务的程序设计实现并行化。
 
(9) 调优和迭代。
 
上述步骤并不是说所有的子问题都必须是运行在不同线程中的并行化任务。设计的时候必须考虑并行化的可能性,然后在编写代码的时候,可以根据性能和可扩展性的目标选择最佳的实现方式。重要的是要以并行方式进行思考,将要解决的工作分解为任务。通过这种方式,您就能够按照需要对代码进行并行化。如果您已经拥有一个面向传统串行执行的设计,那么您将需要努力通过基于任务的程序设计技术对现有设计进行并行化
点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站