Crate rayon_core[−][src]
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
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
.
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.
Creates 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.
Creates 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.