package main
import (
"fmt"
"time"
)
func main(){
t:=time.Now()
for i:=0;i<1000;i++{
time.Sleep(time.Nanosecond) // sleep一纳秒
}
fmt.Println(time.Since(t)) // 输出15秒
}
为什么会输出15秒这么久,每次sleep时CPU会把时间片让出来,其它任务会用占用时间片,CPU的时间片在几毫秒-几十毫秒之间(大概是这个数量级),如果按照15毫秒来算,15ms*1000就是15秒了。
所以sleep一个很小的时间是不准的。我试了python也有类似的现象。
小编水平有限,如果有错误麻烦请指正。