Golang 进程、线程与协程的区别
1.什么是协程、线程、进程?
- 进程
- 系统中所有的应用程序都是以进程的方式运行的。
- 进程是系统资源管理的基本单位
- 各个进程都有独立的地址空间,使得进程之间的地址相互隔离
- 线程
- 线程是程序执行的基本单元。通常来说:一个进程由一个或多个线程组成
- 各个线程之间共享程序(进程)的内存空间及一些进程级的资源。
- 协程
- 轻量级线程,由Go运行时管理
2.协程、线程、进程的区别?
- 进程拥有自己的堆栈,进程之间不共享堆栈,由操作系统调度
- 线程拥有自己的栈,共享堆,也是由操作系统调度
- 协程共享堆,不共享栈,协程不被操作系统内核管理,而是由用户程序调度控制。
- 是用户态协程,切换效率更加高。
3.并发、并行的区别?
- 并发
- 在一段时间内,多个任务会被处理,但是在某一时刻,只有一个任务在执行。
- 并行
- 在同一时刻,可以有多个任务在执行。