继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【学习打卡】第14天 多线程与异步 第14讲

知书筱乐
关注TA
已关注
手记 62
粉丝 14
获赞 90

课程章节:

 第13章 多线程与异步

主讲老师:阿莱克斯刘

课程内容:

今天学习的内容包括:

进程于线程有什么区别 ?

多线程能干吗? 

前台线程与后台线程有什么区别? 

什么是线程池? 

如何开启和结束一个线程? 

什么是资源竞争? 

如何避免资源竞争?


学习结果:多线程和异步操作两者都可以达到避免调用线程阻塞的目的,多线程和异步操作还是有一些区别的。而这些区别造成了使用多线程和异步操作的时机的区别。

线程不是一个计算机硬件的功能,而是操作系统提供的一种逻辑功能,线程本质上是进程中一段并发运行的代码,所以线程需要操作系统投入CPU资源来运行和调度


http://img2.mukewang.com/62fc3fab00018e2710220681.jpg

  • 外部代码调用async Task方法GetUrlContentLengthAsync

  • GetUrlContentLengthAsync内部又调用了另一个异步方法GetStringAsync

  • 由于GetStringAsync有下载等一些操作,为了避免阻塞,就在执行的同时将程序的控制权返还给外部代码,这时候外部程序就可以继续执行

  • 执行到DoIndependentWork的前一句并没有await,所以并不会等待GetStringAsync的结果如何而是会接着往下执行

  • 执行DoIndependentWork

  • 最外层方法GetUrlContentLengthAsync已经执行完了它能执行的所有操作,下一步就是将计算结果返回,但是这时候并没有结果供它返回,因此加await等待

  • getStringTask拿到结果

  • 将结果存储到task中


课程收获:

  1. 资源竞争和线程锁demo

  2. await和async demo

单独抽几天多加理解整个程序,找一本工具书精读理解概念,讲学习的内容在工作中利用起来。

http://img3.mukewang.com/62fc40cf000149a508970457.jpg

http://img2.mukewang.com/62fc40cf0001b84608890450.jpg














打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP

热门评论

对代码的解读很清楚。

查看全部评论