多线程无锁资源回收策略

2024-08-15  本文已影响0人  谭英智

背景

例如分配一片内存,一般是顺序申请,乱序回收

如果是跨线程的话,一般需要引入锁来解决并发访问的问题

然而锁的使用,极大的限制住了最高的访问并发量

在此提出了无锁解决的方案

无锁解决方案

有N个资源

我们可以定义一个长度为N的数组来管理资源

每个资源对应一个index

引入一个N个slot的MPMC无锁队列

来管理空闲的index

算法如下:

-> allocate resource
    -> pop index from mpmc_queue
        -> get resource by index from array
            -> release resource 
                -> push index back to mpmc_queue
上一篇 下一篇

猜你喜欢

热点阅读