| Crates.io | atomic-int |
| lib.rs | atomic-int |
| version | 0.1.4 |
| created_at | 2023-09-18 15:11:51.404494+00 |
| updated_at | 2024-01-27 21:39:47.727844+00 |
| description | Atomics for additional integers, like C/FFI types |
| homepage | |
| repository | https://github.com/taylordotfish/atomic-int |
| max_upload_size | |
| id | 975998 |
| size | 46,842 |
atomic-int provides atomics for additional integers, such as C/FFI types
like c_int.
For integer types that are aliases of primitive integers that have built-in Rust atomics, this crate simply re-exports those atomics. Otherwise, this crate provides a spinlock-based fallback implementation with a compatible API.
This crate also provides types that directly correspond with Rust’s
standard atomics, like AtomicU64, with the difference that the fallback
implementation will similarly be used for any such atomics that are not
supported on a given platform. Thus, all atomics provided by this crate are
available on all platforms1 in some form—either the built-in or fallback
implementation.
Types that directly correspond with Rust’s standard atomics like
AtomicU64 are available with the feature primitives (enabled by
default). This includes AtomicPtr, even though it isn’t exactly an
integer.
Atomic C integer types like AtomicCInt and AtomicCUlong are
available with the feature c (enabled by default). For more granularity,
a separate feature exists for each C integer (e.g., c_int and c_ulong).
The spinlock-based fallback implementation can cause deadlocks with signal
handlers. To avoid this, enable the feature signal, which blocks incoming
signals while the lock is held. This feature is Unix-specific.
atomic-int can optionally depend on libc. If this dependency is
enabled, atomic-int will use the C integer types from libc instead of
core::ffi. This should not make a noticeable difference, but it can
decrease the minimum required Rust version, as C integer types were added
to core::ffi only in version 1.64. The feature signal always enables
libc.
This crate is no_std when libc is not enabled.
As long as the platform supports AtomicBool, which is required
for the fallback implementation. ↩