Expand description
This module defines various operations and types that are implemented in one way for the serial compiler, and another way the parallel compiler.
Β§Operations
The parallel versions of operations use Rayon to execute code in parallel,
while the serial versions degenerate straightforwardly to serial execution.
The operations include join, parallel, par_iter, and par_for_each.
Β§Types
The parallel versions of types provide various kinds of synchronization, while the serial compiler versions do not.
The following table shows how the types are implemented internally. Except where noted otherwise, the type in column one is defined as a newtype around the type from column two or three.
| Type | Serial version | Parallel version |
|---|---|---|
Lock<T> | RefCell<T> | RefCell<T> or |
parking_lot::Mutex<T> | ||
RwLock<T> | parking_lot::RwLock<T> | parking_lot::RwLock<T> |
Re-exportsΒ§
use std::collections::HashMap;πuse std::hash::BuildHasher;πuse std::hash::Hash;πuse std::hash::Hash;πpub use self::freeze::FreezeLock;pub use self::freeze::FreezeReadGuard;pub use self::freeze::FreezeWriteGuard;pub use self::lock::Lock;pub use self::lock::LockGuard;pub use self::lock::Mode;pub use self::mode::FromDyn;pub use self::mode::check_dyn_thread_safe;pub use self::mode::is_dyn_thread_safe;pub use self::mode::set_dyn_thread_safe_mode;pub use self::parallel::broadcast;pub use self::parallel::par_fns;pub use self::parallel::par_for_each_in;pub use self::parallel::par_for_each_slice;pub use self::parallel::par_join;pub use self::parallel::par_map;pub use self::parallel::par_range;pub use self::parallel::parallel_guard;pub use self::parallel::spawn;pub use self::parallel::try_par_for_each_in;pub use self::vec::AppendOnlyIndexVec;pub use self::vec::AppendOnlyVec;pub use self::worker_local::Registry;pub use self::worker_local::WorkerLocal;pub use crate::marker::*;
ModulesΒ§
- atomic π
- Keep the conditional imports together in a submodule, so that import-sorting doesnβt split them up.
- freeze π
- lock π
- This module implements a lock which only uses synchronization if
might_be_dyn_thread_safeis true. It implementsDynSendandDynSyncinstead of the typicalSendandSynctraits. - mode π
- parallel π
- This module defines parallel operations that are implemented in one way for the serial compiler, and another way the parallel compiler.
- vec π
- worker_
local π
StructsΒ§
ConstantsΒ§
- ERROR_
CHECKING π - This makes locks panic if they are already held. It is only useful when you are running in a single thread
TraitsΒ§
Type AliasesΒ§
- Atomic
U64 - An integer type which can be safely shared between threads.
- Mapped
Read Guard - An RAII read lock guard returned by
RwLockReadGuard::map, which can point to a subfield of the protected data. - Mapped
Write Guard - An RAII write lock guard returned by
RwLockWriteGuard::map, which can point to a subfield of the protected data. - Read
Guard - RAII structure used to release the shared read access of a lock when dropped.
- Write
Guard - RAII structure used to release the exclusive write access of a lock when dropped.