|
RT,由于是初学者,对这个ID分配器不是很了解,在设计的时候遇到了很多问题。
最先想到的就是设置一个ID分配池,然后对其进行操作,当需要id时从中提取,反之让他进行回收:
class IdAlloc{
TypeT pool_;
unsigned int low_;
unsigned int high_;
unsigned int allocId(){
// get id from pool_
...
}
bool recyId(const unsigned int& ){
// put id into pool_
...
}
};
假如pool_利用栈实现,经过不断的分配/回收后,可能这个pool_会变得越来越臃肿,随着游戏时间增长,内存也会变得紧张,因为被回收的id要远远多余被利用的id,而这些id都是在pool_中的,在id连续的情况下,也许利用low_,high_来限制id分配的范围能够缓解这个问题,但是当分配/回收后的id不是连续的,那么low_,high_就相当于多余了,请问该如何去更好的实现这个id分配器。或者怎样去改进优化整个游戏的id分配系统。 |
|