文章预览
上个月中旬, Go 1.23版本正式发布 !这也是 Russ Cox作为Go tech leader 的最后一个发布版本,他本人在该版本中做出重要贡献,那就是解决了一直困扰Go团队的Timer/Ticker的GC回收问题,进而解决了Timer的Stop和Reset很难正确使用的问题。 不过,就在昨天,一个叫tulir的gopher提出的issue(ttps://github.com/golang/go/issues/69186)差点让 Russ Cox“晚节不保 ”:)。该issue提到,他写的一段使用了Timer的代码在 Go 1.22 中工作正常,但在Go 1.23中就无法工作了,具体现象是:在linux上,整个程序hang住不动了,而在macOS上,则直接引发panic异常退出:"fatal error: ts set in timer"。 随即,Go101老貘兄“补上一刀”,给出了一个更为简洁的示例: package main import "time" func main () { illegalTimerCopy := *time.NewTimer(time.Second) illegalTimerCopy.Stop() // block for ever } 我也实测了该示例,在我的macOS
………………………………