5个版本
0.1.4 | 2024年1月27日 |
---|---|
0.1.3 | 2024年1月19日 |
0.1.2 | 2023年9月28日 |
0.1.1 | 2023年9月28日 |
0.1.0 | 2023年9月18日 |
#69 in 无标准库
2,502 每月下载量
在 2 个包中使用 (通过 filterm)
33KB
508 代码行
atomic-int
atomic-int提供了额外的整数的原子操作,例如C/FFI类型,如 c_int
。
对于与原始整数别名且具有内置Rust原子操作的整数类型,此包简单地重新导出那些原子操作。否则,此包提供基于自旋锁的回退实现,具有兼容的API。
此包还提供了与Rust标准原子直接对应的类型,例如 AtomicU64
,其区别在于,回退实现将用于任何在特定平台上不受支持的此类原子操作。因此,此包提供的所有原子操作都以某种形式在所有平台上可用——内置或回退实现。
包功能
与Rust标准原子直接对应的类型,如 AtomicU64
,可以通过功能 primitives
获取(默认启用)。这包括 AtomicPtr
,尽管它不是整数。
具有原子C整数类型,如 AtomicCInt
和 AtomicCUlong
,可以通过功能 c
获取(默认启用)。为了更高的粒度,每个C整数都有一个单独的功能(例如,c_int
和 c_ulong
)。
基于自旋锁的回退实现可能导致与信号处理器的死锁。为了避免这种情况,请启用功能 signal
,在保持锁的同时阻止传入的信号。此功能是Unix特定的。
原子整数(atomic-int)可以可选地依赖于 libc
。如果启用此依赖项,原子整数将使用 libc
中的 C 整数类型,而不是 core::ffi
。这不应该造成明显的差异,但它可以降低所需的最低 Rust 版本,因为 C 整数类型仅在版本 1.64 中添加到 core::ffi
。功能 signal
总是启用 libc
。
当 libc
未启用时,此包为 no_std
。
[^1]: 只要平台支持 AtomicBool
,它对于备用实现是必需的。