使用C#和.NET 4编写的并行应用程序“多核并发编程的规则”
2016-03-09 11:12
363 查看
“多核并发编程的规则”
规则的描述如下
1. 并发编程的思想—这条规则就是要谨记并发编程思想进行设计,就像前边章节所提交的。
2. 面向抽象编程-你可以利用.NET4中的TPL提供的新特性使你的高层代码反映解决的问题,并且不是底层线程管理技术复杂化。第二章将会引入TPL。
3. 基于任务模型编程,而不是线程—TPL允许你你编写代码实现基于任务模型的设计而不用担心底层的线程。
4. 设计可以选择关闭并发—当你使用TPL写代码的时候,这些代码页可能会运行在单核的微处理器上。
5. 避免使用锁—利用新的类和方法、结构体解决对于复杂同步方式的需求是很重要的。TPL使避免在很多复杂的情景下使用重量级锁变得更简单,它提供了新的轻量级的同步方法。
6. 借助已有的工具和类库的帮助进行并发编程—Visual Studio 2010提供了新的工具调试、测试、协调并行代码。在本书中你将会学习很多相关的工具和类库。
7. 使用可伸缩的内存分配策略—TPL在CLR里提供了可伸缩的内存分配策略,当任务和线程执行的时候,它会自动的执行内存分配策略。然而,为了最大程度的利用缓存,你必须分析不同的分配可能性,并且尽力避免在每个任务里消耗过多的内存。
8. 设计的可伸缩性可以通过增加负载的方式实现—一旦你精通了并行扩展库,那么使用TPL提供的新的类考虑Gustafson定律就会很容易。如果你的设计需要具有很强的伸缩性,你将可以编写代码根据核心的增加进行调整。Windows 7 和windows Server 2008 R2支持多大256个硬件线程或者逻辑处理器;所以,有足够的伸缩性空间。
规则的描述如下
1. 并发编程的思想—这条规则就是要谨记并发编程思想进行设计,就像前边章节所提交的。
2. 面向抽象编程-你可以利用.NET4中的TPL提供的新特性使你的高层代码反映解决的问题,并且不是底层线程管理技术复杂化。第二章将会引入TPL。
3. 基于任务模型编程,而不是线程—TPL允许你你编写代码实现基于任务模型的设计而不用担心底层的线程。
4. 设计可以选择关闭并发—当你使用TPL写代码的时候,这些代码页可能会运行在单核的微处理器上。
5. 避免使用锁—利用新的类和方法、结构体解决对于复杂同步方式的需求是很重要的。TPL使避免在很多复杂的情景下使用重量级锁变得更简单,它提供了新的轻量级的同步方法。
6. 借助已有的工具和类库的帮助进行并发编程—Visual Studio 2010提供了新的工具调试、测试、协调并行代码。在本书中你将会学习很多相关的工具和类库。
7. 使用可伸缩的内存分配策略—TPL在CLR里提供了可伸缩的内存分配策略,当任务和线程执行的时候,它会自动的执行内存分配策略。然而,为了最大程度的利用缓存,你必须分析不同的分配可能性,并且尽力避免在每个任务里消耗过多的内存。
8. 设计的可伸缩性可以通过增加负载的方式实现—一旦你精通了并行扩展库,那么使用TPL提供的新的类考虑Gustafson定律就会很容易。如果你的设计需要具有很强的伸缩性,你将可以编写代码根据核心的增加进行调整。Windows 7 和windows Server 2008 R2支持多大256个硬件线程或者逻辑处理器;所以,有足够的伸缩性空间。
相关文章推荐
- 深入分析委托与事件_C#
- c# 闭包 小例
- c#自己总结的几个常用的小技巧
- C#父类强制转换成子类,子类隐式转换成父类
- C#第三方控件的使用
- C#匿名方法
- C#二进制数组的字符串形式转换为二进制Byte数组
- C#的Lambda表达式嵌套例子
- C# 新建excel
- C#读取、保存二进制数据文件
- C#读取文本文件
- C#实现压缩与解压缩
- 已Access为支持,书写一个C#写入的记录的方案
- 使用C#向ACCESS中插入数据
- 使用C#向ACCESS中插入数据(仅供参考)
- C#进行Visio二次开发之文件导出及另存Web页面
- C#用正则表达式 获取网页源代码标签的属性或值
- C# 分支语句
- MSDN知识库_c#关键字_static
- C# delegate多种变体