代码改变世界

.Net 4.0 Parallel 编程之旅

2011-06-06 13:28 by Henry Cui, 1811 阅读, 3 推荐, 收藏, 编辑
摘要:在过去的时间里写了9篇Post关于.Net 4.0 Parallel 编程部分的内容,现在整理下,方便自己以后回顾阅读。 首先我们从基础的Loop开始: 1).Net4.0 Parallel编程(一)Data Parallelism 上 2).Net4.0 Parallel编程(二)Data Parallelism 中 3).Net4.0 Parallel编程(三)Data Parallelism下 然后我们看看Task: 1).Net 4.0 Parallel 编程(四) Task(上) 2).Net 4.0 Parallel 编程(五)Task(中) 3).Net 4.0 ... 阅读全文

.Net 4.0 Parallel 编程(九)Task中的数据共享(下)

2011-04-21 10:17 by Henry Cui, 2975 阅读, 3 推荐, 收藏, 编辑
摘要:在上篇Post中我们看过了几种常用的同步类型,本篇文章会介绍下申明性的同步的实现以及对于集合类型数据共享的问题,首先看下申明性同步的实现。 申明性同步 我们可以通过使用Synchronization 特性来标识一个类,从而使一个类型的字段以及方法都实现同步化。在使用Synchronization 时,我们需要将我们的目标同步的类继承于System.ContextBoundObject类型。我们来看看之前的例子我们同步标识Synchronization 的实现: [Synchronization]class SumClass : ContextBoundObject{ private int _ 阅读全文

.Net 4.0 Parallel编程(八)Task中的数据共享(中)

2011-04-12 22:41 by Henry Cui, 2437 阅读, 3 推荐, 收藏, 编辑
摘要:在上篇文章中我们看过了多线程中的数据共享问题,以及通过分离执行来解决的办法。本篇文章就数据共享的同步处理中的一些常见的方法进行一些介绍。 数据同步时的步骤 我之前的文章我们对数据共享问题处理的方式是“分离执行”,我们通过把每个Task执行完成后的各自计算的值进行最后的汇总,也就是说多个Task之间不存在数据共享了,各自做各自的事,完全分离开来。可是这毕竟不是我们常规的处理办法,这样我们会花更多的经历在分离上。其实我们主要的数据共享在Sum上: for (int j = 0; j < 1000; j++){ Sum++;}那我们可以通过一种有序的机制来访问Sum,即当一个Task在进行Su 阅读全文

.Net 4.0 Parallel 编程(七)Task中的数据共享(上)

2011-04-07 13:08 by Henry Cui, 2865 阅读, 3 推荐, 收藏, 编辑
摘要:在前几篇文章中我们看过Parallel Loop以及Task 部分内容,而在多线程的编程中我们较为痛疼的就是多线程中的数据共享问题以及数据同步的问题。本篇Post以及后面的几篇Post中会探讨下TPL中数据共享的常见问题以及其常规的解决办法。 引例 首先我们来看下面的一段代码: static void Main(string[] args){ int Sum = 0; Task[] tasks = new Task[10]; for (int i = 0; i < 10; i++) { tasks[i] = new Task(() => { for (int j = 0; j &l 阅读全文

.Net 4.0 Parallel 编程(六)Task(下)

2011-03-27 14:57 by Henry Cui, 2962 阅读, 4 推荐, 收藏, 编辑
摘要:在之前的文章中已经介绍过了Task的基本使用了,以及如何取消任务、任务继续等功能。本篇Post主要就Task的异常处理以及Wait功能进行些介绍。 等待时间执行 在TPL中我们可以通过三种方式进行等待,一是通过CancellTaken的WaitHanle进行等待、第二种则是通过传统的Tread.Sleep方法、第三种则通过Thread.SpainWait方法。 CancellToken方式: static void Main(string[] args){ var cancell = new CancellationTokenSource(); var token = cancell.Toke 阅读全文

.Net 4.0 Parallel 编程(五)Task(中)

2010-10-28 22:04 by Henry Cui, 2596 阅读, 2 推荐, 收藏, 编辑
摘要:在上篇文章中我们看过了如何创建Task,本篇文章就各种类型Task的使用进行说明。 Task Continuations 首先我们来看看延续的Task,所谓的延续的Task就是在第一个Task完成后自动启动下一个Task。我们通过ContinueWith方法来创建延续的Task。我们假设有一个接受xml解析的服务,首先从某个地方接受文件,然后解析入库,最后返回回执是否解析正确: 在每次调用C... 阅读全文

.Net 4.0 Parallel 编程(四) Task(上)

2010-10-18 22:27 by Henry Cui, 3407 阅读, 5 推荐, 收藏, 编辑
摘要:在之前的文章中,已经介绍过了Parallel Loop(上、中、下)的相关内容。本篇文章中会就Task基础部分进行些介绍。 初识Task 首先我们来构建一个简单的Task的Demo: 在上面这段代码中我们构建出了一段非常简单的使用Task类的代码,通过其Factory属性的创建出一个Task。其运行结果可想而知。其实上面的代码跟:是一样的,只是StartNew方法直接构建出了一个Task之后... 阅读全文

Entity Framework Code-First(下)

2010-08-08 15:38 by Henry Cui, 8319 阅读, 1 推荐, 收藏, 编辑
摘要:在上篇文章中看过在CTP4中Code-First的功能,这篇文章会就Code-First的自定义数据库映射、相关的Api进行一些说明。 回顾 在上篇文章中我们看到了Code-Firts带来的强大的功能。其中我们来看看前面定义的一个实体: 而之后我们需要添加一个属性,一个Remark的属性:我们再来运行下我们的测试会出现下面的错误:错误告诉我们,数据库建立了之后context已经改变了,要么手... 阅读全文

Entity Framework Code-First(上)

2010-07-25 14:42 by Henry Cui, 10966 阅读, 2 推荐, 收藏, 编辑
摘要:在7.14号微软ado.net团队发布了EF Feature CTP4,在ctp4中code-first得到了很大的加强,支持了很多属性。本篇文章中就code-first进行一些尝试。 准备 1.下载ctp4:Entity Framework Feature CTP4. 2.准备我们的工程: 各个项目之间的关系以及作用就不必多说了。 创建Model 我们建立一个employee、depa... 阅读全文

Entity Framework POCO T4模板使用

2010-07-23 22:41 by Henry Cui, 5315 阅读, 1 推荐, 收藏, 编辑
摘要:在之前的文章中写过Entity Framework中POCO的支持。其实在VS2010的Extension里面提供了POCO的模板给我们了,我们可以很快地来实现Entity 跟Contenx的生成了。本文中将介绍POCO模板的使用。 安装 我们选择C#POCO Entity Generator,下载之后,在弹出的对话框中选择安装即可。 生成代码 在这里我们使用Northwind数据库,首先先... 阅读全文