Skip to main content

Crate moa_idalloc

Crate moa_idalloc 

Source
Expand description

id 分配工具箱

提供三种互补的 id 分配机制,按需求选用:

类型机制用途号的形态
monotonic::IdGen单调递增 AtomicU64全局对象身份(koid)稀疏大整数、永不复用、ABA 免疫、无锁
dense::IdAllocator回收位图小而密的可复用号(pid)最小空闲优先、自动增长、可复用
table::IdTable世代槽位表号↔对象表(handle)密集索引 + generation 防 ABA、O(1)

选择要点:

  • 只需要一个永不重复的标识(对外暴露、做比较或 map key)→ monotonic::IdGen, 机制最简、从根上免疫复用问题,64 位空间实际不可能耗尽。
  • 需要小而密、可读、可回收的号(典型如 pid)→ dense::IdAllocator
  • 需要按号存取对象且担心裸号被缓存后复用指向错对象 → table::IdTable, id 自带 generation,旧号在查找时被拒。

Modules§

dense
密集回收式 id 分配器(位图实现)。
monotonic
单调递增 id 生成器(Fuchsia KOID 式)。
table
世代槽位表(id ↔ 对象)。