并发
在讲并发之前,我们先要了解“核”的概念,我们经常会听到别人说我的电脑是双核的或者是4核的,核数越多电脑性能越好。这里说的核就是指CPU,一个CPU同一时刻只能执行一个任务,这一点非常重要。
我们这里就用单核来讲解并发的概念。早期的电脑都是单核的,按照前面所说,单核电脑同一时刻只能执行一个任务,但我们仔细回想一下,真的是这样吗?比如我用迅雷同时下载电影A和电影B,是不是要等电影A的下载进度条走完了才开始下载电影B呢?并非如此,我们看到电影A和电影B的下载进度条同时在走动,那这又是怎么回事呢?实际上,当CPU同时接到2个任务时,CPU会将执行过程分割成很多个时间片段,并按照一定的策略在不同的时间片段分配执行不同的任务,比如在0-10ms执行电影A的下载任务,10-20ms时将任务A挂起并开始执行任务B,20-30ms时将任务B挂起并接着执行任务A,如此循环交替执行2个下载任务。由于多个任务交替的速度非常快,给我们的感觉就是在同时执行。这就是并发,其实就是多个任务在一个时间段内竞争CPU资源。
并行
并发和并行是两个相似又有区别的概念。并行是指同一时刻有多个任务在同时进行,按照前面所说一个CPU同一时刻只能执行一个任务,所以要实现并行至少需要有2个CPU。比如双核电脑同时接到任务A和任务B,任务A被分配到CPU1上执行,任务B被分配到CPU2上执行,这就是并行,2个任务间不需要竞争CPU资源。当然,如果2个任务都被分配到了CPU1上,那这是并发而不是并行(哪个任务分配到哪个CPU上执行是系统决定,人为无法控制,所以即便是多核处理器,我们写的多线程可能是并发也可能是并行)。
串行
串行是和并行相对的。不管并发还是并行,虽然CPU资源分配机制不一样,但给人的感觉上多个任务都是同时在执行的。而串行不一样,当有多个任务串行执行时只能一个个排队执行,当一个任务完全执行完成后才能执行下一个任务。
网友评论