空闲列表是通过重用已分配的现有内存来加速分配的常用方法。有没有办法在并发分配器中使用空闲列表,而不会产生每次分配的锁开销(这将抵消空闲列表的预期性能增益)?
问问题
419 次
2 回答
1
使用无锁链表。
于 2010-01-15T17:55:58.433 回答
0
您可以拥有特定于线程的空闲列表块。
基本上,有一些系统会填充空闲列表(例如垃圾收集器)。然后每个线程可以有自己的空闲列表块,包含少量条目。锁定将用于分配新块。对于具有 30 个条目的块,您每 30 次分配只锁定一次。相反,对于特定于线程的块,您可能必须更快地运行 GC,因为即使某些特定于线程的块仍有一些空闲条目,共享列表也可能变为空。
于 2010-01-22T17:10:06.203 回答