time.sleep 本身有消耗吗?

来源:7-1 为什么要用 Channel,共享内存不好用吗?

冼星扉

2022-05-28

package main

import (
	"fmt"
	"time"
)

var i uint32

func main() {
	//fn, _ := os.OpenFile("cpu.profile", os.O_CREATE|os.O_RDWR, 0644)
	//defer fn.Close()
	//pprof.StartCPUProfile(fn)
	//defer pprof.StopCPUProfile()
	go add()

	time.Sleep(1 * time.Second)
	fmt.Println(i)
}

func add() {
	for {
		i++
		time.Sleep(1 * time.Millisecond)
	}
}

预期打印接近1000的数字,最后打印了870左右的数字。老师,请问这是什么原因?

写回答

1回答

Moody

2022-05-28

这是个并发冲突问题,6-1节会讲到
0
2
Moody
嗯,是有消耗的
2022-05-28
共2条回复

深入Go底层原理,重写Redis中间件实战

深入Go语言原理+Go重写Redis

474 学习 · 172 问题

查看课程