NuGet Gallery: Xiting.Atomic
一个基于 Interlocked 的无锁原子操作库,提供枚举与 primitive 类型的原子读写和基于自旋的比较-交换 (CAS) 操作,使用 .NET 10.0 构建。
- ⚡ 无锁实现 — 基于
Interlocked与Volatile,不依赖lock - 🔢 AtomicOperation 静态类 —
SpinPredicateAndSet自旋条件交换,支持 byte/sbyte/short/ushort/int/uint/long/ulong 及泛型(引用类型、primitive、枚举)重载,竞态时自动自旋重试 - 📌 AtomicEnum<TEnum> 结构体 — 枚举的原子读写、
CompareAndSet、PredicateAndSet、SpinPredicateAndSet操作,与TEnum隐式互转并支持==/!=比较 - 📋 AtomicOperationResult 枚举 — 原子操作结果(
AlreadySet/PredicateFailed/RaceCondition/Success) - 📦 NuGet 发布 — 推
v*tag 自动构建、测试,并通过 Trusted Publishing (OIDC) 发布到 nuget.org - 🔒 API 契约固定 — PublicAPI 分析器 + PackageValidation 基线对比,防止意外破坏公共 API
- 🧪 完善的单元测试 — xUnit v3 + Moq + coverlet,覆盖常规与并发场景
- 🔁 CI/CD 自动化 — GitHub Actions 自动构建、测试、CodeQL 安全分析、Release 发布
- 📦 依赖自动更新 — Dependabot 自动更新 NuGet 与 Actions 依赖,保持依赖最新
Atomic/
├── .github/ # GitHub 配置
│ ├── ISSUE_TEMPLATE/ # Issue 模板
│ │ ├── bug_report.md # Bug 报告模板
│ │ ├── config.yml # Issue 模板选择配置 (文档链接)
│ │ └── feature_request.md # 功能建议模板
│ └── workflows/ # GitHub Actions 工作流
│ │ ├── ci.yml # CI (构建/测试/上传测试结果)
│ │ ├── codeql-analysis.yml # CodeQL 安全分析 (push/PR/每周定时)
│ │ ├── dependabot-auto-merge.yml # Dependabot PR 自动 approve + squash 合并
│ │ ├── dependency-review.yml # 依赖漏洞审查 (PR 评论区报告)
│ │ └── release-publish.yml # 发布 (推 v* tag 自动发布 NuGet 包与 GitHub Release)
│ ├── dependabot.yml # Dependabot 依赖更新 (NuGet + Actions)
│ └── PULL_REQUEST_TEMPLATE.md # PR 描述模板
├── Xiting.Atomic/ # 原子操作库项目
│ ├── AtomicEnum.cs # 枚举原子操作封装结构体
│ ├── AtomicOperation.cs # 原子操作静态类 (SpinPredicateAndSet)
│ ├── AtomicOperationResult.cs # 原子操作结果枚举
│ ├── PublicAPI.Shipped.txt # 已发布公共 API 契约 (PublicAPI 分析器)
│ ├── PublicAPI.Unshipped.txt # 待发布公共 API 变更
│ ├── README.md # 包内 README (nuget.org 包页面展示)
│ └── Xiting.Atomic.csproj # 项目文件 (打包元数据/SourceLink/包验证)
├── Xiting.Atomic.Tests/ # 原子操作库单元测试项目
│ ├── AtomicEnumTests.cs # AtomicEnum 单元测试
│ ├── AtomicEnumConcurrencyTests.cs # AtomicEnum 并发测试
│ ├── AtomicOperationPrimitiveTests.cs # primitive 类型重载单元测试
│ ├── AtomicOperationGenericTests.cs # 泛型重载单元测试
│ ├── AtomicOperationConcurrencyTests.cs # AtomicOperation 并发测试
│ ├── Test.cs # 测试辅助类型 (Test/FlagsTest/UnsupportedStruct)
│ └── Xiting.Atomic.Tests.csproj # 项目文件
├── .editorconfig # 代码风格统一配置
├── .gitattributes # Git 行尾归一化 (默认 LF), diff 策略与二进制标记
├── .gitignore # 忽略规则
├── CHANGELOG.md # 变更日志
├── Directory.Build.props # 全局构建属性 (TargetFramework / Nullable / CPM)
├── Directory.Packages.props # 集中包版本管理 (NuGet CPM)
├── global.json # 测试平台运行器配置 (Microsoft.Testing.Platform)
├── LICENSE # MIT 许可证
├── README.md # 本文档
├── TagPush.bat # 打 tag 并推送发布脚本
└── Atomic.slnx # 解决方案文件 (.NET XML 格式)
dotnet add package Xiting.Atomicgit clone https://github.com/xiting910/Atomic.gitdotnet builddotnet test本项目采用 MIT License。