X

Go并发编程-并发与并行

一、前言

很多人会把并发与并行的概念弄混,有时候说并发有时候说并行,那么两者究竟有啥区别那,本节我们就来澄清下两者概念。

二、并发与并行

首先我们先看下什么是进程,比如你打开的微信app就是一个进程、打开的手淘App、记事本程序就是一个进程,在高级编程语言中你启动main函数运行后其实也启动了一个进程。

进程(Process)是计算机中的程序在某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,也就是说操作系统是以进程为单位进行资源分配的,但是 CPU 这个资源却比较特殊,CPU 的分配是以线程为单位的,这是因为具体占用 CPU 运行的是进程中的线程。一个进程中至少有一个线程,比如启动main函数运行的时候,main函数所在线程就是该进程的主线程,在go中main函数所在线程的生命周期等于进程的生命周期,当main函数所在线程运行结束后,进程就退出了。

如下图双cpu时候,线程A和线程B各自在自己的CPU上执行任务,实现了真正的并行运行。