并行和并发

并行:多个任务同一时间执行。

    两个人同时去挖坑,1小时内挖了直径2米的坑

并发:同一时间执行多个任务。

    两个人交替去挖坑,1小时内挖了直径1米的坑

关键:同时、交替、效率。 

即:并行是同时发生,并发是交替发生。并发的效率小于并行。

高并发:在极短的时间内,有极多的任务。

高并行:不存在,极多任务也是同时去执行。

产生高并发的问题:交替。在计算机微观里,CPU是无法同时执行很多个程序的,虽然在宏观上感觉是同时执行。比如同时开两个音乐播放器,可以听到两首歌。但是实际上CPU是通过不断的切换(时间片)来达到这个目的的。播放器A在播放的时候播放器B是停止的。然后播放器B播放时播放器A是停止的,不过由于CPU切换的速度非常快,所以人感受上是分辨不出来的,就像是显示屏的刷新频率60HZ,屏幕一直在刷新,只是人感官上是感受不到的。由于CPU交替切换的,所以会产生一个资源竞争的问题。这个问题的产生是因为IO读写,IO分为两种:文件IO网络IO

例如:Mysql

Mysql是存储在磁盘上的,每次读取的时候相当于从磁盘去读取,所以产生了一个文件IO。A用户正在读X字段,但是B用户正在写X字段,本来是B先执行写操作,但是在还没有写入的时候CPU切换了执行的程序,切换到A,那么A去读的数据就是B未写入前的数据,但是我们理想状态是B先写A在读。由于存在切换,并且是操作同一个字段,所以会产生资源竞争。即高并发问题。本身高并发并不会造成资源竞争,但是如果你的资源是同一个资源的话,那么就会产生高并发。不过如果你每个链接都是访问的不同地址的话,那么也就不是并发而是并行了。

总结:并发:宏观上感觉是同时执行,但是微观上是交替进行。并行:宏观微观都是同时执行。


并行和并发


关注小程序 [上下博客] 扫码手机完整阅读

标签: 高并发, 并行, 并发

添加新评论