- 进程、线程与协程。
进程是操作系统资源分配的基本单位,线程是操作系统资源调度的基本单位。而协程位于用户态,是在线程基础上构建的轻量级调度单位。 - 并发与并行。
并行指的是同时做很多事情,并发是指同时管理很多事情。 - 主协程与子协程。
main 函数是特殊的主协程,它退出之后整个程序都会退出。而其他的协程都是子协程,子协程退出之后,程序正常运行。
Go
语言通过编译器运行时( runtime
),从语言上支持了并发的特性。
虽然 Go
程序编译后生成的是本地可执行代码,但是这些可执行代码必须运行在Go
语言的运行时(Runtime
)中。Go
运行时类似 Java
和 .NET
语言所用到的虚拟机,主要负责管理包括内存分配、自动垃圾回收、栈处理、协程(Goroutine
)、信道(Channel
,也称为通道)、切片(slice
)、字典(map
)和反射(reflect
)等。Go