进程-线程-多线程-异步
进程-线程-多线程-异步 一、多线程的本质 1、并发多线程的启动、结束顺序 a、如何控制多线程的调用顺序 b、阻塞主线程等待子线程 二、异步操作的本质 三、线程 1、Thread 2、ThreadPool 3、Task 4、TaskFactory 5、Parallel 6、async await 语法糖 四、异常处理 五、线程取消 六、线程安全 一、多线程的本质 cpu的计算速度太快了导致硬件跟不上,就是木桶原理(盛水多少取决于最短板)。 cpu的计算能力很强,所以cpu可以分“时间片”,一个cpu可以分N+个时间片,每个时间片上跑一个线程(代码流)。cpu按顺序执行时间片,因为cpu太强,线程切换的太快,导致人感觉不出执行的卡顿,感觉上是多线程并发的。 微观角度:一个核同一时刻只能执行一个线程; 宏观角度: 是多线程并发的。 cpu分时间片执行线程,线程所需资源的不同会导致有 上下文的切换 ,其实上下文的切换会有性能的损失,但因为cpu计算能力超过其它硬件太多,不损失也是浪费。 扩展:4核8线程—核是物理的核,这里的线程是指虚拟核(一个核虚拟出2个核)。 1、并发多线程的启动、结束顺序 并发线程的启动是无序。 执行相同代码的并发线程的运行时间也不相同,所以结束时间也不同。 a、如何控制多线程的调用顺序 可以用委托提供的BeginInvoke方法,它是异步线程方法,并支持回调函数