C#并发编程

并发编程技术

并发即同一时间内做几件事情,但是并发并不等于多线程,多线程只是并发的一种实现形式,还有其他技术可以实现如:异步,并行,响应式编程,TPL数据流等

1.并发编程技术之---多线程

            多线程是并发的一种形式,在使用多线程时建议使用ThreadPool

 

2.并发编程技术之---异步编程

        异步编程有2大优点,提高GUI程序的响应性,提高服务器应用的可扩展性;

        C#提供了两个异步关键字,async和await ,  其中async加在方法的声明上,它的主要目的是使方法的await 关键字生效,使用async 关键字的方法应该返回Task

    

3.并发编程技术之---并行编程

        并行编程是多线程的一种,对于计算限制的任务(需要大量计算),并行任务可以翻个成独立任务块,就应该使用并行编程,让任务在不同核上自主运行,并行可以分为:数据并行和任务并行,实现数据并行的几种做法:使用Parall.ForEach,  Parall.For,使用PLing等

4.并发编程技术之---响应式编程

    一种声明式的编程方法,程序在该模式中对事件做出响应,根据经验如果事件中带有参数,那么做好采用响应式编程,而不是常规的事件处理程序。响应式编程基于“可观察流”这一概念,一旦申请了可观察流就可以收到任意数量的数据项,并且流在结束时会发出一个错误或者一个流结束的通知,可观察流分为:hot observable(热可观察流:一直在发生的事件流,如果事件达到没有订阅,事件丢失)和cold obserable(冷观察流:不会主东产生事件,通过启动一个事件队列来响应订阅,比如HTTP下载,只有在订阅后才可以发出HTTP请求)。

5.并发编程技术之---TPL数据流

    该技术把异步编程和并行编程两种技术结合起来,如需要对数据进行一连连串的处理,TPL数据流就就很有用,TPL数据流通常作为一个简单的管道,数据从管道的一端浸入,从另一端穿行出来,不过,TPL数据流还可以处理各种类型的网格(mesh)包括网格中定义的分叉(fork)连接(join)循环(loop)的工作,数据网格的基本组成单元是数据块,数据流可以是目标快(接受数据)或者源块(生成数据)。源块连接到目标快,创建网格。

 

6.Actor模型

在Scala 中有Akka其实在微软的.net中支持使用Actor 模型的实现,当然也有Akka.net可以使用;

 

转载于:https://my.oschina.net/u/2475253/blog/3065063

你可能感兴趣的:(C#并发编程)