一个资源池模型

假如有N个资源(范围是0~N-1)可以重复利用,如何来管理这N个资源池?

初始化

用一个vector或数组来初始保存可用资源。

用一个set保存已经用了的资源。

headtail指示用的情况。

 

申请

申请一个,将head后移,将资源的id添加到useable set中,同时将vector中该位置置为invalid

以下为连续申请4个后情况。

 

释放

释放需要明确指出释放哪一个资源。

释放一个资源,将tail指向的位置填充释放的idtail后移。将idset中移除。

以下是先后释放32后的情况。

 

以上只为大概思路,边界及合理检查细节没有描述。如果释放的资源确定就是申请的资源,那么used set也可以不用创建。

原文地址:https://www.cnblogs.com/sunnypoem/p/12491020.html