为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
C#

课程章节:

 第13章 多线程与异步

主讲老师:阿莱克斯刘

课程内容:

今天学习的内容包括:

进程于线程有什么区别 ?

多线程能干吗? 

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

什么是线程池? 

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

什么是资源竞争? 

如何避免资源竞争?


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

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


https://img1.sycdn.imooc.com//62fc3fab00018e2710220681.jpg

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

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

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

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

  • 执行DoIndependentWork

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

  • getStringTask拿到结果

  • 将结果存储到task中


课程收获:

  1. 资源竞争和线程锁demo

  2. await和async demo

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

https://img1.sycdn.imooc.com//62fc40cf000149a508970457.jpg

https://img1.sycdn.imooc.com//62fc40cf0001b84608890450.jpg














点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消