簡體   English   中英

為什么睡眠在goroutine中不起作用

[英]why does it seem that sleep doesn't work in goroutine

package main

import (
    "fmt"
    "time"
)

func main() {
    c := make(chan struct{})
    count := 1
    go func() {
        for {
            fmt.Println("foo", count)
            count++
            time.Sleep(2)
        }
        c <- struct{}{}
    }()
    fmt.Println("Hello World!")
    <-c
}

這是我的代碼,我發現它每個循環都沒有休眠2次,並迅速打印。 是什么原因呢? 我搜索的是睡眠將使goroutine放棄對cpu的控制,當再次獲得控制時,它將檢查自身是否正在睡眠?

time.Sleep持續時間以納秒為單位,因此應延遲2秒;

time.Sleep(2000000000)    

或者,正如@ Ainar-G在評論中指出的那樣,可讀性更好;

time.Sleep(2 * time.Second)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM