6 个版本

0.0.6 2024年2月13日
0.0.5 2024年1月27日
0.0.4 2023年11月28日
0.0.2 2023年10月1日
0.0.1 2023年9月28日

#144 in 内存管理

MIT 许可证

61KB
970

hzrd

通过利用危险指针提供共享、可变状态。

该 crate 的核心概念是内存换速度。容器避免锁定值,而是积累垃圾:以后需要释放的额外数据。垃圾回收通过危险指针控制。每个值的读取者可以持有该值的一个引用。如果容器中的值被交换,则他们持有的引用通过其危险指针保持有效。然后(在某个时间点)他们可以取消引用,值将在某个时间点被清理

HzrdCell

HzrdCell 旨在提供类似于 std 的 Cell 类型的多线程版本。一个基本示例

use hzrd::HzrdCell;

let cell = HzrdCell::new(false);

std::thread::scope(|s| {
    s.spawn(|| {
        // Loop until the value is true
        while !cell.get() {
            std::hint::spin_loop();
        }

        // And then set it back to false!
        cell.set(false);
    });

    s.spawn(|| {
        // Set the value to true
        cell.set(true);

        // And then read the value!
        // This might print either `true` or `false`
        println!("{}", cell.get()); 
    });
});

HzrdCell 提供内存安全、多线程、共享可变。但这并不是很有用。我们通常需要某种同步来避免竞争(不是数据竞争,而是一般的竞争)。

无运行时依赖