Open stanzhai opened 5 years ago
@athurg 为什么不直接用:
func timeoutFunc() { select { case <-ch: isRequestEnd <- true // 防止timer长时间堆积消耗内存 case <-time.After(1e9): } }
如果绝大数的ch
没有超时呢?
不要用 time.After
, 要用 timer := time.NewTimer()
如果没有超时,则要 defer timer.Stop()
就可以了~
绝对没必要额外开一个 go 来做超时的。 另外 可以试试 NoneBlock Channel 方案 , 非阻塞chan的使用
https://stanzhai.site/blog/post/5c2c881058f8e906e2000040
好记性不如烂键盘