代码之家  ›  专栏  ›  技术社区  ›  Alex Gaynor

具有并发分配器的自由主义者

  •  0
  • Alex Gaynor  · 技术社区  · 16 年前

    自由主义者是一种通过重用已经分配的现有内存来加速分配的常见方法。有没有一种方法可以在并发分配器中使用空闲列表,而不会在每个分配中产生锁的开销(这将抵消自由主义者的预期性能增益)?

    2 回复  |  直到 16 年前
        1
  •  1
  •   moonshadow    16 年前
        2
  •  0
  •   Thomas Pornin    16 年前

    你可以有线程特定的空闲列表块。

    基本上,有一些系统填充空闲列表(例如垃圾收集器)。然后每个线程都可以有自己的空闲列表块,其中包含少量条目。锁定将用于分配新块。对于包含30个条目的块,您将仅每30个分配锁定一次。相反,对于线程特定的块,您可能需要更快地运行GC,因为共享列表可能会变为空,即使某些线程特定的块仍然有一些空闲条目。