# atomic-plus **Repository Path**: happyboyx/atomic-plus ## Basic Information - **Project Name**: atomic-plus - **Description**: Atomic标准库的类型扩展. - **Primary Language**: Rust - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-31 - **Last Updated**: 2025-12-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

atomic-plus

Atomic标准库的类型扩展.

License

简体中文 | English

## 功能特性 - `AtomicF64`: 64 位浮点数的原子操作 - `AtomicF32`: 32 位浮点数的原子操作 - `AtomicBoolArray`: 空间高效的原子布尔数组(每个布尔值占用 1 比特) - `AtomicShortString`: 固定长度的原子字符串(最多 32 个 ASCII 字符) - `AtomicTimestamp`: 纳秒精度的原子时间戳 - `AtomicPtr`: 泛型原子指针包装器 - `AtomicRc`: 原子引用计数(类似于 `std::rc::Rc` 但支持原子操作) ## 安装 在 `Cargo.toml` 中添加: ```toml [dependencies] atomic-ext = "0.1.0" ``` ## 使用示例 ```rust use atomic_ext::{AtomicF64, AtomicBoolArray}; use std::sync::atomic::Ordering; // 创建原子浮点数 let atomic_float = AtomicF64::new(10.5); atomic_float.store(20.5, Ordering::Relaxed); let value = atomic_float.load(Ordering::Relaxed); // 创建原子布尔数组 let bool_array = AtomicBoolArray::new(100); bool_array.set(42, true, Ordering::Relaxed); let is_true = bool_array.get(42, Ordering::Relaxed); ``` ## 特性 - **线程安全**: 所有类型都设计用于并发访问 - **无需 unsafe 代码**: 安全的 API 接口 - **高性能**: 基于标准库原子操作构建 - **完整测试**: 包含并发测试场景 ## 注意事项 - `AtomicF64` 和 `AtomicF32` 使用浮点数的位模式进行存储 - `AtomicBoolArray` 的内存使用量仅为 `Vec` 的 1/64 - `AtomicRc` 默认不是 `Send`/`Sync`(包含裸指针) - `AtomicTimestamp` 提供纳秒级精度 ## 测试 运行测试: ```bash cargo test ```