Skip to content

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

(constructor)(recycleDelay, expansionBlockSize)

构造函数

Methods

Method

Modifiers

Description

checkIn(id)

回收一个ID

验证ID的有效性后,将其加入延迟回收队列。 ID不会立即可重用,而是在延迟时间后才真正回收。

checkOut()

获取一个可用的ID

返回一个32位ID,高16位为世代版本,低16位为索引。

forceProcessDelayedRecycle()

强制执行延迟回收处理

在某些情况下可能需要立即处理延迟回收队列, 比如内存压力大或者需要精确的统计信息时。

getStats()

获取统计信息

isValid(id)

验证ID是否有效

检查ID的索引和世代版本是否匹配当前状态。

基于 MIT 许可证发布