首页 >后端开发 >Golang >Golang 上下文切换

Golang 上下文切换

WBOY
WBOY转载
2024-02-06 09:10:08861浏览

Golang 上下文切换

问题内容

我有一个非常基本的疑问: 操作系统调度程序上下文可以在映射到内核级的用户级线程之间切换吗?

假设 goscheduler 在内核线程上调度了一个 goroutine A。现在 goroutine A 进行 sysblock 调用,谁先进行上下文切换:OS 还是 go 调度程序?


正确答案


Go 调度程序管理 goroutine,这些 goroutine 被复用到操作系统级线程上。 Go 调度器可以高效地执行 Goroutine 之间的上下文切换,例如当 Goroutine 进行阻塞系统调用时,而无需涉及 OS 调度器。但是,需要注意的是,由于时间分片等因素,操作系统调度程序可能会独立中断并执行上下文切换。因此,从Go程序的角度可能无法准确确定上下文切换的确切时机以及操作系统调度程序的参与。

进一步阅读:

golang源码中的proc.go

Go 调度程序:实现轻量级并发语言

以上是Golang 上下文切换的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:stackoverflow.com。如有侵权,请联系admin@php.cn删除