Trong hướng dẫn GO, chúng tôi có trượt này:Tại sao time.sleep lại cần thiết để chạy một số goroutine?
package main
import (
"fmt"
"time"
)
func say(s string) {
for i := 0; i < 5; i++ {
time.Sleep(100 * time.Millisecond)
fmt.Println(s)
}
}
func main() {
go say("world")
say("hello")
}
kết quả Chạy mã này sản xuất dự kiến ("thế gian" và "hello" ghi vào màn hình thay thế cho nhau 5 lần).
Tuy nhiên, nếu chúng ta nhận xét ra time.Sleep
(và do đó, dòng "time"
của việc nhập khẩu) và chạy lại chương trình, chúng tôi là trái với chỉ "hello" ghi vào màn hình gấp năm lần.
Điều gì là rất quan trọng về time.Sleep
giúp lưu goroutine khỏi bị chết?
Kết quả tôi nhận được với 'runtime.Gosched()' hơi khác một chút. Tôi nhận được 5: hello và 4: thế giới. Trong khi với 'time.Sleep()' tôi nhận được 5 của mỗi. – Akavall