多线程无锁资源回收策略

背景

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

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

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

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

无锁解决方案

有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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容