Home > @esengine/ecs-framework-monorepo > IdentifierPool
IdentifierPool class
世代式ID池管理器
用于管理实体ID的分配和回收,支持世代版本控制以防止悬空引用问题。 世代式ID由索引和版本组成,当ID被回收时版本会递增,确保旧引用失效。
支持动态扩展,理论上可以支持到65535个索引(16位),每个索引65535个版本(16位)。 总计可以处理超过42亿个独特的ID组合,完全满足ECS大规模实体需求。
Signature:
typescript
export declare class IdentifierPool
Example
typescript
const pool = new IdentifierPool();
// 分配ID
const id = pool.checkOut(); // 例如: 65536 (版本1,索引0)
// 回收ID
pool.checkIn(id);
// 验证ID是否有效
const isValid = pool.isValid(id); // false,因为版本已递增
Constructors
Constructor | Modifiers | Description |
---|---|---|
构造函数 |
Methods
Method | Modifiers | Description |
---|---|---|
回收一个ID 验证ID的有效性后,将其加入延迟回收队列。 ID不会立即可重用,而是在延迟时间后才真正回收。 | ||
获取一个可用的ID 返回一个32位ID,高16位为世代版本,低16位为索引。 | ||
强制执行延迟回收处理 在某些情况下可能需要立即处理延迟回收队列, 比如内存压力大或者需要精确的统计信息时。 | ||
获取统计信息 | ||
验证ID是否有效 检查ID的索引和世代版本是否匹配当前状态。 |