在Go语言中,GMP(Goroutine Multiprocessing)是Go语言运行时系统用于实现并发的核心组件。GMP通过将Go程序中的goroutine映射到系统线程上来实现并发执行。

在GMP中,goroutine的调度和执行是由Go运行时系统管理的,而不是由操作系统内核管理。因此,GMP的m(即机器)是在用户态执行的。Go运行时系统将goroutine映射到m上,并通过调度器在m之间进行切换,以实现并发执行。

需要注意的是,GMP中的m会通过系统调用来阻塞当前goroutine,这时会切换到内核态执行,但这只是暂时的,当系统调用返回时,又会切换回用户态继续执行。这种切换是由Go运行时系统控制的,不同于操作系统内核的线程切换。

golang gmp的m在用户态执行还是内核态执行

原文地址: https://www.cveoy.top/t/topic/iWkS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录