sync.Pool的使用

一定要搞明白sync.Pool的正确用法,避免出现以下问题:

			kline := this.pool.Get()
			defer this.pool.Put(kline)
			kline.UnMarshal(data)
			select {
			case this.chKLine <- &kline:
			}

其中,this.chKLine是带缓冲的channnel。问题在于,写入缓冲channel后就将对象put归还了,这个对象会被重新使用/赋值,而缓冲channel中该数据可能还没有处理完毕。

posted on 2018-05-14 20:56  angry-baby  阅读(246)  评论(0)    收藏  举报

导航