golang学习笔记--MPG模型

MPG模式:
M(Machine):操作系统的主线程
P(Processor):协程执行需要的资源(上下文context),可以看作一个局部的调度器,使go代码在一个线程上跑,他是实现从N:1到N:M映射的关键
G(Goroutine):协程,有自己的栈。包含指令指针(instruction pointer)和其它信息(正在等待的channel等等),用于调度。一个P下面可以有多个G

golang学习笔记--MPG模型_第1张图片 
1、当前程序有三个M,如果三个M都在一个cpu运行,就是并发,如果在不同的cpu运行就是并行

2、M1,M2,M3正在执行一个G,M1的协程队列有三个,M2的协程队列有3个,M3协程队列有2个

3、从上图可以看到: Go的协程是轻量级的线程,是逻辑态的,Go可以容易的起上万个协程。

4、其它程序c/java的多线程,往往是内核态的,比较重量级,几千个线程可能耗光cpu 

并发模型 

golang学习笔记--MPG模型_第2张图片

你可能感兴趣的:(golang,#,学习笔记,学习,笔记,golang)