# 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标准库的类型扩展.
简体中文 | 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
```