func timeSleep(ns int64) {
	if ns <= 0 {
		return
	}

	gp := getg()
	t := gp.timer
	if t == nil {
		t = new(timer)
		gp.timer = t
	}
	*t = timer{}
	t.when = nanotime() + ns
	t.f = goroutineReady
	t.arg = gp
	tb := t.assignBucket()
	lock(&tb.lock)
	if !tb.addtimerLocked(t) {
		unlock(&tb.lock)
		badTimer()
	}
	goparkunlock(&tb.lock, waitReasonSleep, traceEvGoSleep, 2)
}
// timeSleep puts the current goroutine to sleep for at least ns nanoseconds.
//go:linkname timeSleep time.Sleep
timeSleep puts the current goroutine to sleep for at least ns nanoseconds.
go:linkname timeSleep time.Sleep
// timeSleep puts the current goroutine to sleep for at least ns nanoseconds . // go : linkname timeSleep time . Sleep
func timeSleep(ns int64) {
	if ns <= 0 {
		return
	}
	gp := getg()
	t := gp.timer
	if t == nil {
		t = new(timer)
		gp.timer = t
	}
	*t = timer{}
	t.when = nanotime() + ns
	t.f = goroutineReady
	t.arg = gp
	tb := t.assignBucket()
	lock(&tb.lock)
	if !tb.addtimerLocked(t) {
		unlock(&tb.lock)
		badTimer()
	}
	goparkunlock(&tb.lock, waitReasonSleep, traceEvGoSleep, 2)
}
func timeSleep ( ns int64 ) { if ns <= 0 { return } gp := getg ( ) t := gp . timer if t == nil { t = new ( timer ) gp . timer = t } * t = timer { } t . when = nanotime ( ) + ns t . f = goroutineReady t . arg = gp tb := t . assignBucket ( ) lock ( & tb . lock ) if ! tb . addtimerLocked ( t ) { unlock ( & tb . lock ) badTimer ( ) } goparkunlock ( & tb . lock , waitReasonSleep , traceEvGoSleep , 2 ) }
timeSleep puts the current goroutine to sleep for at least ns nanoseconds.
timeSleep puts the current goroutine to sleep for at least ns nanoseconds .