异步多线程编程模型

 

 

电脑的处理器CPU处理时间程序时属于并行处理,也就是同时运行处理的,而咱们常常说的并发,其实只是看起来并行,可是仍是相似于轮询的。数据库

 

如今好的处理器会有虚拟处理器,一个内核会有一个实际的处理器,也会产生一个虚拟的处理器,至关于四核八线程。缓存

 

CPU会缓存未完成的线程,L1,L2,L3级缓存,若是不够用,则会存在内存里。多线程

 

一个.NET程序运行则会造成本身的程序域,在本身的程序域中会加载本身的DLL,若是想删除某个DLL,则须要删除应用程序域。CPU执行程序域时会在自身生成一个线程去执行并发

 

线程建立时默认为前台线程,(控制台黑窗口)若为前台线程页面会等待线程结束才会结束页面(黑窗口)。若为后台线程,页面则会在执行结束主线程后自动关闭(黑窗口),而此时子线程会在后台继续执行。异步

 

每次建立线程消耗过大,建议使用线程池完成多线程操做,建立线程池时池中已有闲置线程,线程池中线程为后台线程。性能

 

 

 

 

 

 异步有三种方式网站

 

异步委托 (APM),事件异步(EAP),任务异步(TAP)线程

 

 异步委托    APM3d

 第一次试验blog

 

 

 

 第二次总结

 

假如遇到一个费时的操做,先发出请求,接下来便去作其余操做,等到操做作完,查看开始的操做是否完成。

例如:

 

事件异步      EAP

 

下载一个网页,成功后再执行其余操做(阻塞)

 

微软方法中后缀为Async的方法为异步操做

 

 

 

 

 任务异步      TAP

 

 

 

 

   等待单任务完成

 

    等待多任务完成

 

      任务等待

 

     task泛型操做

 

    本身建立线程放入任务

 

    线程池中线程执行任务

 

 

 

 Awit & Async

 

 

 

 

 

 

 

异步的任务只能由异步的方法来调用

若是调用  Test  则会先执行“fafafafafaf”,而后才会打印网页

 

 

 

 

 PLINQ(处理器并行处理) 比 LINQ (单核处理) 性能要好

     PLINQ

 

      LINQ

 

IIS的异步

       IIS工做线程有限, 不可以占用过多

 

EF 的异步

 

创建数据库表属性

 

普通方法下EF异步

 

异步控制器下的EF

 

 

 

 使用异步,可使网站运行不阻塞,用户体验更好。

相关文章
相关标签/搜索