常规的方法,开启一个子 goroutine,将 clientv3 的指针传进去,在这个里面轮询,父 goroutine 阻塞。
不过最近发现了一个新的写法,用 time.AfterFunc+defer 在一个 goroutine 里的相互调用而实现轮询,这样不需要开子 goroutine,也不用阻塞,简单清洁。
唯一有点搞不明白的是 time.AfterFunc 的机制,测试一下感觉是和其他的任务交叉执行的,但是总是会有偏差,不能保证绝对准时的延迟执行。
请教一下各位老铁还有没有别的实现方法。