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
ConfigurationDeprecated
Contains 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 the
ThreadPool::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
.initializeDeprecated
Deprecated 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 where join_context
was called. This will occur if
the second job is stolen by a different thread, or if
join_context
was called from outside the thread pool to begin
with.Create a “fork-join” scope
s
and invokes the closure with a
reference to s
. This closure can then spawn asynchronous tasks
into s
. Those tasks may run asynchronously with respect to the
closure; they may themselves spawn additional tasks into s
. When
the closure returns, it will block until all tasks that have been
spawned into s
complete.Create a “fork-join” scope
s
with FIFO order, and invokes the
closure with a reference to s
. This closure can then spawn
asynchronous tasks into s
. Those tasks may run asynchronously with
respect to the closure; they may themselves spawn additional tasks
into s
. When the closure returns, it will block until all tasks
that have been spawned into s
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 the scope()
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 the scope_fifo()
function to create a scope.