Expand description
Parallel iterators and other parallel processing tools.
See crate ::rayon
.
Modules§
- Parallel iterator types for arrays (
[T; N]
) - Parallel iterator types for standard collections
- Traits for writing parallel programs using an iterator-style interface
- Parallel iterator types for options
- The rayon prelude imports the various
ParallelIterator
traits. The intention is that one can includeuse rayon::prelude::*
and have easy access to the various traits and methods you will need. - Parallel iterator types for ranges, the type for values created by
a..b
expressions - Parallel iterator types for inclusive ranges, the type for values created by
a..=b
expressions - Parallel iterator types for results
- Parallel iterator types for slices
- Parallel iterator types for strings
- This module contains the parallel iterator types for owned strings (
String
). You will rarely need to interact with it directly unless you have need to name one of the iterator types. - Parallel iterator types for vectors (
Vec<T>
)
Structs§
- Provides context to a closure called by
broadcast
. - Provides the calling context to a closure called by
join_context
. - Represents a fork-join scope which can be used to spawn any number of tasks. See
scope()
for more information. - Represents a fork-join scope which can be used to spawn any number of tasks. Those spawned from the same thread are prioritized in relative FIFO order. See
scope_fifo()
for more information. - Thread builder used for customization via
ThreadPoolBuilder::spawn_handler
. - Represents a user created thread-pool.
- Error when initializing a thread pool.
- Used to create a new
ThreadPool
or to configure the global rayon thread pool.
Enums§
- Result of
yield_now()
oryield_local()
.
Functions§
- Executes
op
within every thread in the current threadpool. If this is called from a non-Rayon thread, it will execute in the global threadpool. Any attempts to usejoin
,scope
, or parallel iterators will then operate within that threadpool. When the call has completed on each thread, returns a vector containing all of their return values. - Returns the number of threads in the current registry. If this code is executing within a Rayon thread-pool, then this will be the number of threads for the thread-pool of the current thread. Otherwise, it will be the number of threads for the global thread-pool.
- If called from a Rayon worker thread, returns the index of that thread within its current pool; if not called from a Rayon thread, returns
None
. - Creates a “fork-join” scope
s
and invokes the closure with a reference tos
. This closure can then spawn asynchronous tasks intos
. Those tasks may run asynchronously with respect to the closure; they may themselves spawn additional tasks intos
. When the closure returns, it will block until all tasks that have been spawned intos
complete. - Creates a “fork-join” scope
s
with FIFO order, and invokes the closure with a reference tos
. This closure can then spawn asynchronous tasks intos
. Those tasks may run asynchronously with respect to the closure; they may themselves spawn additional tasks intos
. When the closure returns, it will block until all tasks that have been spawned intos
complete. - Takes two closures and potentially runs them in parallel. It returns a pair of the results from those closures.
- Identical to
join
, except that the closures have a parameter that provides context for the way the closure has been called, especially indicating whether they’re executing on a different thread than wherejoin_context
was called. This will occur if the second job is stolen by a different thread, or ifjoin_context
was called from outside the thread pool to begin with. - Returns the maximum number of threads that Rayon supports in a single thread-pool.
- Creates a “fork-join” scope
s
and invokes the closure with a reference tos
. This closure can then spawn asynchronous tasks intos
. Those tasks may run asynchronously with respect to the closure; they may themselves spawn additional tasks intos
. When the closure returns, it will block until all tasks that have been spawned intos
complete. - Creates a “fork-join” scope
s
with FIFO order, and invokes the closure with a reference tos
. This closure can then spawn asynchronous tasks intos
. Those tasks may run asynchronously with respect to the closure; they may themselves spawn additional tasks intos
. When the closure returns, it will block until all tasks that have been spawned intos
complete. - Puts the task into the Rayon threadpool’s job queue in the “static” or “global” scope. Just like a standard thread, this task is not tied to the current stack frame, and hence it cannot hold any references other than those with
'static
lifetime. If you want to spawn a task that references stack data, use thescope()
function to create a scope. - Spawns an asynchronous task on every thread in this thread-pool. This task will run in the implicit, global scope, which means that it may outlast the current stack frame – therefore, it cannot capture any references onto the stack (you will likely need a
move
closure). - Fires off a task into the Rayon threadpool in the “static” or “global” scope. Just like a standard thread, this task is not tied to the current stack frame, and hence it cannot hold any references other than those with
'static
lifetime. If you want to spawn a task that references stack data, use thescope_fifo()
function to create a scope. - Cooperatively yields execution to local Rayon work.
- Cooperatively yields execution to Rayon.