
Go 1.19 started reformatting code in a way that makes it more obvious how it will be rendered on pkg.go.dev. It gets it almost right, but not entirely. Therefore, I had to modify some of the comments so that they are formatted correctly.
32 строки
622 Б
Go
32 строки
622 Б
Go
//go:build !scheduler.none
|
|
// +build !scheduler.none
|
|
|
|
package runtime
|
|
|
|
import "internal/task"
|
|
|
|
// Pause the current task for a given time.
|
|
//
|
|
//go:linkname sleep time.Sleep
|
|
func sleep(duration int64) {
|
|
if duration <= 0 {
|
|
return
|
|
}
|
|
|
|
addSleepTask(task.Current(), nanosecondsToTicks(duration))
|
|
task.Pause()
|
|
}
|
|
|
|
// run is called by the program entry point to execute the go program.
|
|
// With a scheduler, init and the main function are invoked in a goroutine before starting the scheduler.
|
|
func run() {
|
|
initHeap()
|
|
go func() {
|
|
initAll()
|
|
callMain()
|
|
schedulerDone = true
|
|
}()
|
|
scheduler()
|
|
}
|
|
|
|
const hasScheduler = true
|