并发和并行

来源:互联网 发布:静物摄影师 知乎 编辑:程序博客网 时间:2024/04/30 03:33
并发是在同一时段发生,并行是在同一时刻发生
“并行”是指无论从微观还是宏观,二者都是一起执行的,就好像两个人各拿一把铁锨在挖坑,一小时后,每人一个大坑。 而“并发”在微观上不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行,从宏观外来看,好像是这些进程都在执行,这就好像两个人用同一把铁锨,轮流挖坑,一小时后,两个人各挖一个小一点的坑,要想挖两个大一点得坑,一定会用两个小时。 从以上本质不难看出,“并发”执行,在多个进程存在资源冲突时,并没有从根本提高执行效率。
 一般来说呢,写程序,在同一台机器上写多线程,就是并发。 
 但是需要考虑互斥问题如果在不同机器上,应该没有这些问题
 实际上的效率是有提高的从测试的数据上,在一定范围内,线程数越多,程序运行越快。超过一定范围,线程数越多,那程序效率反而降低了,这个范围是根据硬件条件决定的
再打个比喻网上看到的:
有人做过比喻,要完成吃完三个馒头的任务,一个人可以这个馒头咬一口,那个馒头咬一口,这样交替进行,最后吃完三个馒头,这就是并发,因为在三个馒头上同时发生了吃的行为.  三个馒头如果分给 三个人吃,这样的任务完成形式叫并行.

0 0
原创粉丝点击