package main import ( "fmt" "os" "runtime" "time" ) func main() { runtime.GOMAXPROCS(1) // 限制为1个P,便于观察Hand-off效果 ch := make(chan bool) go func() { fmt.Println("Goroutine: performing blocking syscall (file read)") _, err := os.ReadFile("dev/urandom") // 阻塞式文件I/O if err != nil { fmt.Println("Error:", err) } fmt.Println("Goroutine: syscall completed") ch <- true }() // 主Goroutine持续执行,证明调度未停滞 for i := 0; i < 5; i++ { fmt.Printf("Main: iteration %d\n", i) time.Sleep(50 * time.Millisecond) } <-ch }