http://lx.gongxuanwang.com/sszt/39.htm

106 阅读1分钟

临时对象池中存储的每一个值都应该是独立的、平等的和可重用的。遴选真题我们应该既不用关心从池中拿到的是哪一个值,也不用在意这个值是否已经被使用过。要完全做到这两点,可能会需要我们额外地写一些代码。不过,这个代码量应该是微乎其微的,就像fmt包对临时对象池的用法那样。所以,在选用临时对象池的时候,我们必须要把它将要存储的值的特性考虑在内。

都包含一个私有的临时对象和一个共享的临时对象列表。前者只能被其对应的 P 所关联的那个 goroutine 中的代码访问到,而后者却没有这个约束。遴选真题从另一个角度讲,前者用于临时对象的快速存取,而后者则用于临时对象的池内共享。

正因为有了这样的数据结构,临时对象池才能够有效地分散存储压力和性能压力。同时,又因为临时对象池的Get方法对这个数据结构的妙用,才使得其中的临时对象能够被高效地利用。比如,该方法有时候会从其他的本地池的共享临时对象列表中,“偷取”一个临时对象。lx.gongxuanwang.com/lxzt/lxbszt…