前言
本文用来记录对编程学习中一些常见基本概念的理解
提示:以下是本篇文章正文内容,下面案例可供参考
一、并发和并行
1.1 形象化理解
并行:同一时刻,可以同时处理事情的能力(强调同一时刻)
举例:比如说一个食堂,有8个窗口,同一时刻可以有8个人同时打饭,那么我们就说这个食堂并行能力是8
并发:与单位时间相关,在单位时间内可以处理事情的能力(强调时间段内)
举例:比如说一个食堂,有8个窗口,每个窗口打饭需要花费30秒,那我们就说这个食堂的并发能力是每分钟16个。
1.2 三个角度的对比解释
解释一:并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。
解释二:并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。
解释三:并行是在多台处理器上同时处理多个任务。如 hadoop 分布式集群,并发是在一台处理器上“同时”处理多个任务。
并行(parallel):指在同一时刻,有多条指令在多个处理器上同时执行。所以无论从微观还是从宏观来看,二者都是一起执行的。
并发(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。
延伸阅读
我已经理解了并发和并行的区别
二、程序、任务、进程和线程的联系与区别
1.概念
程序是一组指令的有序集合
任务是一个一般性的术语,指由软件完成的一个活动,一个任务既可以是一个进程,也可以是一个线程。它指的是一系列共同达到某些目的的操作。例如读取数据并讲数据放在内存中,这个任务可以作为一个进程来实现,也可以作为一个线程来实现。
进程通常指程序的执行
线程是某一进程中一路单独运行的程序
延伸阅读
进程与线程的一个简单解释
总结
待补充
参考文档:1. https://www.jianshu.com/p/cbf9588b2afb
2. https://www.cnblogs.com/coder-lzh/p/10646207.html#_label3
3.http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html