C#并发编程经典实例--笔记

时间:2023-03-09 18:00:19
C#并发编程经典实例--笔记
一、简介
--并发
        同时做多件事情
--多线程
        并发的一种形式,它采用多个线程来执行程序。
            **如非必要,代码里不要出现 “new Thread()”。
--并行编程
        把正在执行的大量任务分割成小块,分配给多个同时运行的线程。
--异步编程
        并发的一种形式,它采用future模式(Future就是你可以拿到未来的“结果”)或回调(callback)机制,以避免手动处理难以维护的线程。
        **现在推荐使用的 future类型有 Task 和 Task<TResult>,老式异步编程中采用回调或事件
--响应式编程
        一种声明式的变成模式,程序在该模式中对事件做出响应。
-------------------------------------------------------------------------------------------------------------------------------------------
二、异步编程
 
异步编程的两大好处:1,对于 GUI程序;
                                      2,对于服务器端应用。
现代异步.NET 程序使用两个关键字:async和await
三、并行编程
 
并行的形式有两种:数据并行和任务并行。
     Parallel 类型或者 PLINQ
四、响应式编程
Reactive Extensions(Rx)把事件看作是依次到达的数据序列。因此,将 Rx 认作是 LINQ to events(基于 IObservable<T> )也是可以的
Throttle 常用于类似“文本框自动填充”这样的场合,用户在文本框中输入文字,当他停
止输入时,才需要进行真正的检索。
Sample 建立了一个有规律的超时时间段,每个时间段结束时,它就发布该时间段内最后的一条数据。如果这个时间段没有数据,就不发布。
对于快速涌来的输入,限流和抽样是很重要的两种工具。别忘了还有一个过滤输入的简单方法,就是采用标准 LINQ 的 Where 操作符。可以这样说, Throttle 和 Sample 操作符与Where 基本差不多,唯一的区别是 Throttle 、 Sample 根据时间段过滤,而 Where 根据事件的数据过滤。在抑制快速涌来的输入流时,这三种操作符提供了三种不同的方法。
在编写 ASP.NET 程序时可考虑使用 HttpContext.Current.Items ,它的功能和 CallContext一样,但效率更高。
Task.Run 完全可以替代 BackgroundWorker 、 Delegate.BeginInvoke 和 ThreadPool.QueueUserWorkItem