作者回复: 你使用的是那个版本呢?
官方Go runtime 1.13将对sync.Pool中的对象回收时机策略做出调整。在1.12版本及以前的版本中,在每轮垃圾回收过程中,每个sync.Pool实例中的所有缓存对象都将被无条件回收掉。从1.13版本开始,如果一个sync.Pool实例在上一轮垃圾回收过程结束之后仍然被使用过,则其中的缓存对象将不会被回收掉。此举对于使用sync.Pool来提升效率的程序来说,将大大减少周期性的因为缓存被清除而造成的瞬时效率下降。
作者回复: 这个就是在函数课程中提到,方法在Go中方法是第一公民,所以New是结构体中一个变量,而这个变量的值是个方法。这里你把自定义的方法作为变量值付给了New
作者回复: 其实在我的总结里提到了,sync.Pool是可以在多协程的情况下使用的,但是在访问共享池时,会有锁的开销。
-协程安全,会有锁的开销