进程与线程
先引入三个比如: cpu---公司
进程---办公室
线程---程序员(我们)
全局变量,内存等资源---公司提供的电脑,桌子等
进程: 操作系统分配程序执行资源的单位
线程:进程的一个实体,是CPU调度和分配的单位。
理解: 进程一旦建立,便有了一个主线程与主进程,还包括线程可能用到的内存,硬盘等资源,也就是是说,进程=线程+资源,就好比一个办公室=程序员+电脑 , 电脑这些资源由公司负责分配,而真正使用这些资源的是我们程序员.
多进程与多线程
为了更大的提高公司的业绩,自然会想到扩大公司规模,再开办公室(相当于开多个进程),或者只有一个办公室的情况下,再招更多人的程序员(相当于开更多的线程)
这两种都可以,但是毫无疑问,再开一间办公室会消耗更多的财力,对操作系统来说,再开一个进程,相当于克隆一个原来的进程,开辟一条缓存区,保存主线程的信息,这都需要消耗时间,当需要的子进程更多,当然就不合适了;再就是多招一些员工,继续在这个办公室工作,相当于在原来的进程中再开一些子线程,这样也可以实现多任务,所以多线程比多进程有更高的并发性,但有问题是,这个办公室的电脑等资源有限,会出现资源的争夺,即在共享全局变量的时候会出现安全性问题, 在多进程中,各自用各自的资源,虽然资源一样,但是不共享
并行与并发
并行:当任务数小于或者等于cpu核数时,每一个任务都有对应的cpu来处理执行,即任务真的是一起执行的
并发: 指的是任务数多于cpu核数,通过操作系统的各种任务调度算法,实现用多个任务“一起”执行(实际上总有一些任务不在执行,因为切换任务的速度相当快,看上去一起执行而已)
如果你和我有共同爱好,我们可以加个好友一起交流!