卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章34223本站已运行391

Golang 上下文切换

golang 上下文切换

问题内容

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

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


正确答案


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

进一步阅读:

golang源码中的proc.go

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

卓越飞翔博客
上一篇: 将 firestore“integer_value”转换为整数
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏