课程章节:
第13章 多线程与异步
主讲老师:阿莱克斯刘
课程内容:
今天学习的内容包括:
进程于线程有什么区别 ?
多线程能干吗?
前台线程与后台线程有什么区别?
什么是线程池?
如何开启和结束一个线程?
什么是资源竞争?
如何避免资源竞争?
学习结果:多线程和异步操作两者都可以达到避免调用线程阻塞的目的,多线程和异步操作还是有一些区别的。而这些区别造成了使用多线程和异步操作的时机的区别。
线程不是一个计算机硬件的功能,而是操作系统提供的一种逻辑功能,线程本质上是进程中一段并发运行的代码,所以线程需要操作系统投入CPU资源来运行和调度
外部代码调用async Task方法GetUrlContentLengthAsync
GetUrlContentLengthAsync内部又调用了另一个异步方法GetStringAsync
由于GetStringAsync有下载等一些操作,为了避免阻塞,就在执行的同时将程序的控制权返还给外部代码,这时候外部程序就可以继续执行
执行到DoIndependentWork的前一句并没有await,所以并不会等待GetStringAsync的结果如何而是会接着往下执行
执行DoIndependentWork
最外层方法GetUrlContentLengthAsync已经执行完了它能执行的所有操作,下一步就是将计算结果返回,但是这时候并没有结果供它返回,因此加await等待
getStringTask拿到结果
将结果存储到task中
课程收获:
资源竞争和线程锁demo
await和async demo
单独抽几天多加理解整个程序,找一本工具书精读理解概念,讲学习的内容在工作中利用起来。
点击查看更多内容
1人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦