2 个版本
0.1.1 | 2021 年 4 月 13 日 |
---|---|
0.1.0 | 2021 年 4 月 13 日 |
#932 在 并发
9KB
149 行
provenant
这是 Arc<T>
和 Weak<T>
的一个版本,它能够在所有 Arc 都被丢弃后立即释放内存,即使 Weak
引用仍然存在。
特性
- 最后一个
Arc
被丢弃时释放内存 Weak
是Copy
魔法
它在运行时通过概率性地跟踪来源来实现。
- 初始化时,指向的内存获得一个随机 ID。
- 弱指针获得该 ID 的一个副本。
- 如果 ID 不匹配,弱指针将无法升级。
其思路是,如果弱指针的 ID 与内存的 ID 不匹配,它一定已经被丢弃。它要么是从丢弃中清零的,要么现在里面有了其他东西。
⚠️
如果后端内存被用于其他用途,并且巧合地具有相同的 ID 位模式,则弱指针可能会得到一个假阳性。祝你好运 :)
依赖项
~315KB