我对goroutine,用户线程和内核线程概念感到困惑
从有效的介绍goroutine,那么os threads本文提到的是什么意思?是用户线程还是内核线程?
我从go-scheduler论文中了解到M G P,为什么的数量P等于CPU的数量?如果所有的cpus用于go程序,但是os系统中的其他程序没有cpu线程要执行?
os系统生成了多少个内核线程?
我是 Golang 的新手,我刚刚通过以下示例了解了 Goroutine 的概念:
package main
import "fmt"
func f(from string) {
for i := 0; i < 3; i++ {
fmt.Println(from, ":", i)
}
}
func main() {
f("direct")
go f("goroutine")
go f("goroutine2")
go func(msg string) {
fmt.Println(msg)
}("going")
var input string
fmt.Scanln(&input)
fmt.Println("done")
}
Run Code Online (Sandbox Code Playgroud)
这是执行结果之一:
direct : 0
direct : 1
direct : 2
goroutine : 0
goroutine2 : 0
goroutine2 : 1
goroutine2 : 2
goroutine : 1
goroutine : 2
going
done
Run Code Online (Sandbox Code Playgroud)
我可以看到,goroutine并 …