背景
例如分配一片内存,一般是顺序申请,乱序回收
如果是跨线程的话,一般需要引入锁来解决并发访问的问题
然而锁的使用,极大的限制住了最高的访问并发量
在此提出了无锁解决的方案
无锁解决方案
有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