bevy_platform/sync/
atomic.rs

1//! Provides various atomic alternatives to language primitives.
2//!
3//! Certain platforms lack complete atomic support, requiring the use of a fallback
4//! such as `portable-atomic`.
5//! Using these types will ensure the correct atomic provider is used without the need for
6//! feature gates in your own code.
7
8pub use atomic_16::{AtomicI16, AtomicU16};
9pub use atomic_32::{AtomicI32, AtomicU32};
10pub use atomic_64::{AtomicI64, AtomicU64};
11pub use atomic_8::{AtomicBool, AtomicI8, AtomicU8};
12pub use atomic_ptr::{AtomicIsize, AtomicPtr, AtomicUsize};
13pub use core::sync::atomic::Ordering;
14
15#[cfg(target_has_atomic = "8")]
16use core::sync::atomic as atomic_8;
17
18#[cfg(not(target_has_atomic = "8"))]
19use portable_atomic as atomic_8;
20
21#[cfg(target_has_atomic = "16")]
22use core::sync::atomic as atomic_16;
23
24#[cfg(not(target_has_atomic = "16"))]
25use portable_atomic as atomic_16;
26
27#[cfg(target_has_atomic = "32")]
28use core::sync::atomic as atomic_32;
29
30#[cfg(not(target_has_atomic = "32"))]
31use portable_atomic as atomic_32;
32
33#[cfg(target_has_atomic = "64")]
34use core::sync::atomic as atomic_64;
35
36#[cfg(not(target_has_atomic = "64"))]
37use portable_atomic as atomic_64;
38
39#[cfg(target_has_atomic = "ptr")]
40use core::sync::atomic as atomic_ptr;
41
42#[cfg(not(target_has_atomic = "ptr"))]
43use portable_atomic as atomic_ptr;