C和Java没那么香了,Serverless时代Rust即将称王?
我们上文中介绍了GO语言封装了所有的系统调用,因此凡是被阻塞的操作,都能被调度器感知,通过阅读goroutine的代码位置在GOPATH\src\runtime\proc.go中,其中retake函数的功能是实现抢占式调度,调度逻辑如下,首先如果目前正在运行的goroutine被阻塞那么即可直接让度CPU,不需要抢占。如果正在运行的goroutine距上次调度的时间超过了一定的阈值,那么就调用preemptone函数,强制使当前处于运行态的goroutine出让CPU并加入全局就绪态的队列中。然后.