作者回复: 你放在一个池子里的实例最好是一个类型的,要不后面用的时候会很麻烦。
作者回复: 我大概明白你的意思。这篇文章你可能还没有仔细看。
你需要先搞清楚(以下内容在文章里都有):
在涉及到本地池的 shared 字段的时候会有锁,但是这种锁是分段锁,也就是说,每个本地池都会有自己的锁。
因此,在对应某个 P 的本地池的锁处于锁定状态的时候,所有正试图访问(不论是 Get 还是 Put)这个本地池的 goroutine 都会被阻塞。
一个临时对象池拥有的本地池的数量与 P 的数量相同。所以,即使有 goroutine 因此被阻塞,往往也只是少数。又因为分段锁的缘故,它们被锁住的时间一般也是很短暂的。
当你知道了这些,你就会明白,临时对象池在并发访问方面是很高效的。
再结合我在专栏里揭示的访问步骤和细节,你应该就可以搞懂你问的问题了。
作者回复: 我会讲完的,放心,预计45讲左右。
作者回复: 不是,是返回结果变量err的值。
作者回复: 你说的“不存在”是什么意思?
作者回复: Get 的时候只会想法设法拿到一个临时对象,而不会移动任何对象。