[−]Function astral::thirdparty::rayon::spawn
pub fn spawn<F>(func: F) where
F: FnOnce() + Send + 'static,
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.
Since tasks spawned with this function cannot hold references into
the enclosing stack frame, you almost certainly want to use a
move
closure as their argument (otherwise, the closure will
typically hold references to any variables from the enclosing
function that you happen to use).
This API assumes that the closure is executed purely for its
side-effects (i.e., it might send messages, modify data protected
by a mutex, or some such thing). If you want to compute a result,
consider spawn_future()
.
Panic handling
If this closure should panic, the resulting panic will be
propagated to the panic handler registered in the ThreadPoolBuilder
,
if any. See ThreadPoolBuilder::panic_handler()
for more
details.
Examples
This code creates a Rayon task that increments a global counter.
use std::sync::atomic::{AtomicUsize, Ordering, ATOMIC_USIZE_INIT}; static GLOBAL_COUNTER: AtomicUsize = ATOMIC_USIZE_INIT; rayon::spawn(move || { GLOBAL_COUNTER.fetch_add(1, Ordering::SeqCst); });