#atomic #integer #fallback #libc #c-int

无std atomic-int

针对额外的整数,如C/FFI类型的原子操作

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 无标准库

Download history 16/week @ 2024-03-13 28/week @ 2024-03-20 670/week @ 2024-03-27 711/week @ 2024-04-03 607/week @ 2024-04-10 1073/week @ 2024-04-17 1167/week @ 2024-04-24 711/week @ 2024-05-01 387/week @ 2024-05-08 530/week @ 2024-05-15 322/week @ 2024-05-22 665/week @ 2024-05-29 701/week @ 2024-06-05 611/week @ 2024-06-12 623/week @ 2024-06-19 407/week @ 2024-06-26

2,502 每月下载量
2 个包中使用 (通过 filterm)

Apache-2.0

33KB
508 代码行

atomic-int

atomic-int提供了额外的整数的原子操作,例如C/FFI类型,如 c_int

对于与原始整数别名且具有内置Rust原子操作的整数类型,此包简单地重新导出那些原子操作。否则,此包提供基于自旋锁的回退实现,具有兼容的API。

此包还提供了与Rust标准原子直接对应的类型,例如 AtomicU64,其区别在于,回退实现将用于任何在特定平台上不受支持的此类原子操作。因此,此包提供的所有原子操作都以某种形式在所有平台上可用——内置或回退实现。

包功能

与Rust标准原子直接对应的类型,如 AtomicU64,可以通过功能 primitives 获取(默认启用)。这包括 AtomicPtr,尽管它不是整数。

具有原子C整数类型,如 AtomicCIntAtomicCUlong,可以通过功能 c 获取(默认启用)。为了更高的粒度,每个C整数都有一个单独的功能(例如,c_intc_ulong)。

基于自旋锁的回退实现可能导致与信号处理器的死锁。为了避免这种情况,请启用功能 signal,在保持锁的同时阻止传入的信号。此功能是Unix特定的。

原子整数(atomic-int)可以可选地依赖于 libc。如果启用此依赖项,原子整数将使用 libc 中的 C 整数类型,而不是 core::ffi。这不应该造成明显的差异,但它可以降低所需的最低 Rust 版本,因为 C 整数类型仅在版本 1.64 中添加到 core::ffi。功能 signal 总是启用 libc

libc 未启用时,此包为 no_std

[^1]: 只要平台支持 AtomicBool,它对于备用实现是必需的。

依赖项