在多核计算机上优化程序时,一个不错的起点是考虑程序是否可以被分割成可以在多个核心上并行执行的部分。如果解决方案可以被视作是针对大数据集中的每个元素执行的计算密集型操作,那么它就是利用.NET Framework 4中的新型数据并行编程功能——Parallel.ForEach和Parallel LINQ(PLINQ)——的理想候选者。 文档将使你熟悉Parallel.ForEach和PLINQ,讨论如何使用这些技术,并解释哪些特定场景最适合使用每种技术。Parallel类的ForEach方法是C#中常见循环构造(foreach循环)的多线程实现。回想一下,foreach循环允许你迭代使用IEnumerable<T>表示的可枚举数据集。Parallel.ForEach类似于foreach循环,因为它迭代一个可枚举数据集,但与foreach不同的是,Parallel.ForEach使用多个线程来评估循环体的不同调用。结果证明,这些特性使得Parallel.ForEach成为数据并行编程的一个广泛有用的机制。 为了并行评估序列中的函数,重要的是要考虑如何将迭代空间分割成较小的部分,以便可以并行处理。为了执行独立动作的数据并行操作,可以使用Parallel.ForEach,而PLINQ则适用于需要保留顺序的数据并行操作。例如,对于简单的数据并行操作和独立动作,使用Parallel.ForEach是不错的选择,但如果顺序保持很重要,则可能考虑使用PLINQ。此外,当处理数据流时,PLINQ提供了一种方便的方式来处理连续的数据输入,这在某些情况下可能比Parallel.ForEach更有优势。 对于涉及两个集合的操作,PLINQ同样提供了一种便捷的方式进行操作,但这并不意味着Parallel.ForEach不能用。通过thread-local状态访问进行并行处理时,Parallel.ForEach可能更适合处理需要频繁访问线程局部变量的场景。在退出操作方面,Parallel.ForEach提供了ParallelLoopState.Stop()和ParallelLoopState.Break()来终止或跳出循环,这对于需要精细控制退出条件的复杂操作非常重要。 最终,选择Parallel.ForEach还是PLINQ取决于具体的使用场景和需求。Parallel.ForEach在需要多线程处理独立任务时表现出色,而PLINQ则在需要保持数据顺序、处理连续数据流以及与两个集合进行操作时提供了额外的便利性和灵活性。理解这些技术的差异以及它们各自的优势将有助于开发者在多核心编程时做出更明智的决策。































- 粉丝: 10
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 大数据环境下计算机软件技术研究.docx
- 《java程序设计》学生管理系统分析方案.doc
- 大数据深度应用新探索.pdf
- 基于数字图像处理技术的冰凌参数识别方法.docx
- 企业门户网站建设方案.docx
- 论网络隐私权的民法保护.docx
- CADASIL-病例分享及文献复习.ppt
- 通信工程制图标准概况.doc
- 学习吴恩达视频并借助 Python 库实现房价预测小项目(含梯度下降、正则化与神经网络)
- 职业院校在计算机教学中应用项目教学法的思考.docx
- 小型校园网络规划与措施毕业.doc
- 安腾普备份软件安装配置手册.docx
- 如何提高中职学校计算机基础课程教学水平探讨.docx
- 大数据时代泸州智慧交通建设与发展.docx
- 基于单片机的智能交通灯系统研究设计.doc
- 论述企业项目管理与战略管理的融合.docx


