Crate rayon_core
source ·Expand description
§Restricting multiple versions
In order to ensure proper coordination between threadpools, and especially
to make sure there’s only one global threadpool, rayon-core
is actively
restricted from building multiple versions of itself into a single target.
You may see a build error like this in violation:
error: native library `rayon-core` is being linked to by more
than one package, and can only be linked to by one package
While we strive to keep rayon-core
semver-compatible, it’s still
possible to arrive at this situation if different crates have overly
restrictive tilde or inequality requirements for rayon-core
. The
conflicting requirements will need to be resolved before the build will
succeed.
Structs§
- ConfigurationDeprecatedContains the rayon thread pool configuration. Use
ThreadPoolBuilder
instead. - 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.
Functions§
- 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, indicates whether that thread’s local deque still has pending tasks. Otherwise, returns
None
. For more information, see theThreadPool::current_thread_has_pending_tasks()
method. - 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
. - initializeDeprecatedDeprecated in favor of
ThreadPoolBuilder::build_global
. - 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. - Create 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. - Create 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. - 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()
function to create a scope. - 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.