还不懂高并发系统该如何设计吗?今天开始给大家开启新的系列《高并发系统架构》。
首先先讲一些基础的概念,并行和并发的区别:
·单核单线程,假设开启了一个线程准备执行任务,此时有1个cpu内核可供线程使用,这个线程正常执行时就可以描述为:并发量为1(线程数)。
·并行执行也是1(CPU处理数)。单线程多内核,如果还是单个线程执行,此时可能CPU内核为2,当然也能正常运行。可此时有了一个内核空闲,下来了多线程多内核。
为了提升硬件资源利用率,通常会开启和内核数相等的线程数,此时可以描述为:并发量2(线程数)。
·并行执行2(CPU处理数)。如果在此基础上继续增加内核数,便会出现执行等待或争夺cpu使用权的情况。为什么是等待和争夺?没一回事。划重点,1个在物理上存在的cpu内核,在同一时间内只能执行一个线程的任务,如果正在执行的任务耗时比较长,cpu会利用时间片轮转和上下文切换机制,让单核cpu在多个线程之间内切换执行。由于是多个线程共享一个cpo,执行效率肯定会变差,也就是说不会有两个任务在一个cpu 上同时执行。
讲到这里,你理解并发和并行的区别了吗?明白!最后总结一下,在单机中,并行指的是同时执行的线程数,并发指的是一个时间窗口内,需要同时处理的线程数。再记两个单词:并行,parallel ['paerelel ],custom[kan'k3:rent]。在分布式系统中并行和并发的概念和单机一样,后面还会详细给大家讲解。
我是尚硅谷的一明哥,点赞关注收藏!这次一定要点赞评论关注哦!