开发者

Freelists with concurrent allocators

开发者 https://www.devze.com 2022-12-16 07:36 出处:网络
Freelists are a common way to speed up allocation by reusing existing memory that was already allocated.Is there a way to use free-lists in a concurrent allocator, without incurring the overhead of a

Freelists are a common way to speed up allocation by reusing existing memory that was already allocated. Is there a way to use free-lists in a concurrent allocator, without incurring the overhead of a lock for every allocation (which would ne开发者_JAVA技巧utralize the intended performance gain of the freelist)?


Use a lock-free linked list.


You could have thread-specific free list chunks.

Basically, there is some system which populates the free lists (e.g. a garbage collector). Then each thread could have its own free list chunk, containing a small number of entries. Locking would be used to allocate a new chunk. With chunks with 30 entries, you would lock only once every 30 allocations. Conversely, with thread-specific chunks you may have to run the GC sooner, because the shared list could become empty even if some of the thread-specific chunks still have some free entries.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号