Time 戈朗时间,睡虫?
我在下面生成测试代码(gotest.go) 控制台Time 戈朗时间,睡虫?,time,go,Time,Go,我在下面生成测试代码(gotest.go) 控制台 go run gotest.go 还有,更改我电脑的日期 (示例:2015-07-30->2015-07-29) 然后呢,, println未打印 是虫子吗 (第二天开始工作) 我使用MacOs最新版本。 多谢各位 内部睡眠是在绝对时间内完成的:如果您在T时间调用sleep(n),则程序计划在n时间后不会醒来,而是在时间T+n醒来 这通常更可取,因为: 时间通常不会倒流 由于操作系统调度延迟,反复休眠的程序可能无限期地落后于调度;使用绝对时
go run gotest.go
还有,更改我电脑的日期
(示例:2015-07-30->2015-07-29)
然后呢,,
println未打印
是虫子吗
(第二天开始工作)
我使用MacOs最新版本。
多谢各位 内部睡眠是在绝对时间内完成的:如果您在
T
时间调用sleep(n)
,则程序计划在n
时间后不会醒来,而是在时间T+n
醒来
这通常更可取,因为:
- 时间通常不会倒流
- 由于操作系统调度延迟,反复休眠的程序可能无限期地落后于调度;使用绝对时间可以通过缩短睡眠时间来补偿延迟
time.Sleep(2*time.Second)
Go运行时将goroutine安排在2016-08-25 16:27:14唤醒,并将goroutine置于睡眠状态
同时
用户将系统时间设置为2016-08-2416:27:13
现在,超时将在一天零一秒后过期
这种情况不应该发生在Go使用POSIX时钟或其等价物的系统上。我在windows机器上没有这种行为。也许这是unix机器上的一个错误,因为例如在time.Sleep函数中使用时间比较,但这不是真的,或者我错过了什么?以下是时间的文档。Sleep将暂停当前goroutine至少一段时间。持续时间为负或为零会导致睡眠立即返回i验证和
time.Sleep(1*time.Second)
确实会使我的goroutine睡眠1秒。这是time.Sleep
界面;我在内部说过,接口是以绝对超时实现的,请参阅
go run gotest.go