mod partition;
pub use partition::{
clear_parallel_executor, partition_for_each, partition_for_each_available,
partition_for_each_with, partition_map, partition_map_available, partition_map_with,
partition_read_for_each, partition_read_for_each_available, partition_read_for_each_with,
partition_read_map, partition_read_map_available, partition_read_map_with,
register_parallel_executor, Executor, ParallelExecutor, PartitionPlan,
};
use super::tokens::SyncRegionFamily;
use super::SyncRegionToken;
use crate::token::with_fresh_token;
#[inline]
pub fn scope_exclusive<R, F>(f: F) -> R
where
R: Send,
F: Send + for<'brand> FnOnce(SyncRegionToken<'brand>) -> R,
{
std::thread::scope(|scope| {
let handle = scope.spawn(|| with_fresh_token::<SyncRegionFamily, _, _>(f));
match handle.join() {
Ok(result) => result,
Err(payload) => std::panic::resume_unwind(payload),
}
})
}