码迷,mamicode.com
首页 > 编程语言 > 详细

异步多线程编程模型

时间:2018-07-26 13:11:50      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:事件   电脑   dll   线程   试验   应用   遇到   总结   内核   

 

 

电脑的处理器CPU处理时间程序时属于并行处理,也就是同时运行处理的,而我们经常说的并发,其实只是看起来并行,但是还是类似于轮询的。

 

现在好的处理器会有虚拟处理器,一个内核会有一个实际的处理器,也会产生一个虚拟的处理器,相当于四核八线程。

 

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

 

一个.NET程序运行则会形成自己的程序域,在自己的程序域中会加载自己的DLL,如果想删除某个DLL,则需要删除应用程序域。CPU执行程序域时会在自身生成一个线程去执行

 

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

 

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

 

技术分享图片

 

 

技术分享图片

 

技术分享图片

 

 异步有三种方式

 

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

 

 异步委托    APM

 第一次试验

技术分享图片

 

技术分享图片

 

技术分享图片

 

 第二次总结

 技术分享图片

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

例如:

技术分享图片

 

事件异步      EAP

 

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

技术分享图片

 

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

 

技术分享图片

 

技术分享图片

 

技术分享图片

 

 任务异步      TAP

 

技术分享图片

 

 

技术分享图片

 

 技术分享图片  等待单任务完成

 

技术分享图片    等待多任务完成

 

技术分享图片      任务等待

 

技术分享图片     task泛型操作

 

技术分享图片    自己创建线程放入任务

 

技术分享图片    线程池中线程执行任务

 

 

 

 Awit & Async

 

 技术分享图片

 

 

技术分享图片

 

技术分享图片

 

 

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

如果调用  Test  则会先执行“fafafafafaf”,然后才会打印网页

 技术分享图片

 

 

技术分享图片

 

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

技术分享图片     PLINQ

 

技术分享图片      LINQ

 

IIS的异步

 技术分享图片      IIS工作线程有限, 不能够占用过多

 

EF 的异步

 

建立数据库表属性

技术分享图片

 

普通方法下EF异步

技术分享图片

 

异步控制器下的EF

 技术分享图片

 

技术分享图片

 

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

异步多线程编程模型

标签:事件   电脑   dll   线程   试验   应用   遇到   总结   内核   

原文地址:https://www.cnblogs.com/cwmizlp/p/9367310.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!