### 前提说明:阅历有限 只说一些自己知道的进程 线程 协程
- 进程是cpu分配内存的最小单位 也就是说程序的执行都离不开进程
- 线程(轻量级进程 划重点轻量级进程和进程不是一回事) 是cpu时间片切换的最小单位 线程是由进程派生的
- 协程(轻量级线程 划重点轻量级线程和线程也不是一回事)
- 基于各种语言的运行模型不同:
- php master + child 进程模型 主进程派生子进程 同时主进程对子进程进行管理 子进程处理请求
- go 在一个进程内 起了多个操作系统线程 系统线程负责执行不同的goroutine
- 内核态 用户态
- 在单核机器上 是同一个时刻只有一个进程或者线程执行 进程和线程的调度是由cpu来调度的 所以是内核态
- go 虽然底层起了多个操作系统线程 cpu真正调度的还是这些系统线程 但是每个系统线程执行哪个goroutine 是由golang的runtime 进行调度的 也就是说 cpu调度golang的底层的系统线程 golang的runtime调度goroutine 所以协程的调度是用户态的
以上是个人的一些理解 希望我写的足够通俗易懂 有什么问题 或者 建议欢迎大家询问
有疑问加站长微信联系(非本文作者))