Go微服务实战
上QQ阅读APP看书,第一时间看更新

5.1.1 核心概念

▪进程:是指具有一定功能的程序关于某数据集合上的一次执行过程,主要包含程序指令和数据。

▪线程:进程的子集,是由进程创建的拥有自己控制流和栈的轻量级实体,一个进程至少有一个线程。线程是进程的实际存在。

▪goroutine:是Go语言并发程序的最小执行单位,可以理解为goroutine运行在操作系统的线程之上,它更为轻量。

通过上面三个概念,我们可以总结一下三者的特性。goroutine比线程更为轻量,而线程又比进程更为轻量。一个进程可以有多个线程,每个线程可以有多个goroutine;反过来goroutine需要一个有进程的环境才可以运行。所以,goroutine运行的时候,需要有一个进程,并且进程至少有一个线程,进程和线程都由系统负责调度和管理,而Go语言工程师只需要负责goroutine即可。

注意

Go语言程序是通过调度程序组件使用m:n的调度技术来运行goroutine的。m:n是指多路复用n个操作系统线程执行m个goroutine。具体的调度会在8.1.3节详细介绍。