面试者与面试官

1、解释下G、M、P分别代表什么?

G:是goroutine的缩写,一个G代表一个Go代码片段;

M:是machine的缩写,一个M代表一个内核线程,也称工作线程;

P:是processor的缩写,一个P代表执行一个Go代码片段所必须的资源;

2、使用go关键字生成的goroutine是放置在P中,还是M中?

当一个G被创建并初始化完成后会立即被存储到本地P的runnext字段中,因为G必须先被添加入到P的可以运行G队列中才能在M中运行。