为什么用到并发以及并发会有什么问题

为什么用到并发

并发编程的本质其实就是利用多线程技术,在现代多核的CPU的背景下,催生了并发编程的趋势,通过并发编程的形式可以将多核CPU的计算能力发挥到极致,性能得到提升。除此之外,面对复杂业务模型,并行程序会比串行程序更适应业务需求,而并发编程更能吻合这种业务拆分 。

即使是单核处理器也支持多线程执行代码,CPU通过给每个线程分配CPU时间片来实现这个机制

时间片是CPU分配给各个线程的时间,因为时间片非常短,所以CPU通过不停地切换线程执行,让我们感觉多个线程是同时执行的,时间片一般是几十毫秒(ms)。

并发不等于并行:并发指的是多个任务交替进行,而并行则是指真正意义上的“同时进行”。实际上,如果系统内只有一个CPU,而使用多线程时,那么真实系统环境下不能并行,只能通过切换时间片的方式交替进行,而成为并发执行任务。真正的并行也只能出现在拥有多个CPU的系统中。

并发的优点:

充分利用多核CPU的计算能力;

方便进行业务拆分,提升应用性能;

并发产生的问题:

高并发场景下,导致频繁的上下文切换

临界区线程安全问题,容易出现死锁的,产生死锁就会造成系统功能不可用

CPU通过时间片分配算法来循环执行任务,当前任务执行一个时间片后会切换到下一个任务。但是,在切换前会保存上一个任务的状态,以便下次切换回这个任务时,可以再加载这个任务的状态。所以任务从保存到再加载的过程就是一次上下文切换

线程上下文切换过程:

 个人博客:https://www.upheart.top/ 

个人公众号,日常分享一个知识点,每天进步一点点,面试不慌

原创文章 19 获赞 214 访问量 16万+

猜你喜欢

转载自blog.csdn.net/qq_35508033/article/details/106105138