这句话我没看懂,请详细解释一下,用简单的英语来做,Goroutines是协同调度的,而不是依靠内核来管理它们的时间共享。
1 回答
浮云间
TA贡献1829条经验 获得超4个赞
免责声明:这是对内核和 go 运行时中调度的粗略和不准确的描述,旨在解释概念,而不是对真实系统的准确或详细解释。
您可能(或不知道),一个 CPU 实际上不能同时运行两个程序:一个 CPU 只有一个执行线程,一次可以执行一条指令。早期系统的直接后果是您无法同时运行两个程序,每个程序都需要(系统方面)一个专用线程。
当前采用的解决方案称为伪并行:给定多个逻辑线程(例如多个程序),系统将在一定时间内执行其中一个逻辑线程,然后切换到下一个。使用非常少的时间(以毫秒为单位),您会给人类用户一种并行的错觉。此操作称为调度。
Go 语言不直接使用这个系统:它本身实现了一个运行在系统调度器之上的调度器,并调度 goroutine 本身的执行,绕过为每个例程使用一个真实线程的性能成本。这种类型的系统称为light/green thread。
- 1 回答
- 0 关注
- 141 浏览
添加回答
举报
0/150
提交
取消