Struct rayon_core::scope::ScopeBase

source ·
struct ScopeBase<'scope> {
    registry: Arc<Registry>,
    panic: AtomicPtr<Box<dyn Any + Send + 'static>>,
    job_completed_latch: CountLatch,
    marker: PhantomData<Box<dyn FnOnce(&Scope<'scope>) + Send + Sync + 'scope>>,
}

Fields§

§registry: Arc<Registry>

thread registry where scope() was executed or where in_place_scope() should spawn jobs.

§panic: AtomicPtr<Box<dyn Any + Send + 'static>>

if some job panicked, the error is stored here; it will be propagated to the one who created the scope

§job_completed_latch: CountLatch

latch to track job counts

§marker: PhantomData<Box<dyn FnOnce(&Scope<'scope>) + Send + Sync + 'scope>>

You can think of a scope as containing a list of closures to execute, all of which outlive 'scope. They’re not actually required to be Sync, but it’s still safe to let the Scope implement Sync because the closures are only moved across threads to be executed.

Implementations§

source§

impl<'scope> ScopeBase<'scope>

source

fn new(owner: Option<&WorkerThread>, registry: Option<&Arc<Registry>>) -> Self

Creates the base of a new scope for the given registry

source

fn heap_job_ref<FUNC>(&self, job: Box<HeapJob<FUNC>>) -> JobRefwhere FUNC: FnOnce() + Send + 'scope,

source

fn inject_broadcast<FUNC>(&self, job: Arc<ArcJob<FUNC>>)where FUNC: Fn() + Send + Sync + 'scope,

source

fn complete<FUNC, R>(&self, owner: Option<&WorkerThread>, func: FUNC) -> Rwhere FUNC: FnOnce() -> R,

Executes func as a job, either aborting or executing as appropriate.

source

unsafe fn execute_job<FUNC>(this: *const Self, func: FUNC)where FUNC: FnOnce(),

Executes func as a job, either aborting or executing as appropriate.

source

unsafe fn execute_job_closure<FUNC, R>( this: *const Self, func: FUNC ) -> Option<R>where FUNC: FnOnce() -> R,

Executes func as a job in scope. Adjusts the “job completed” counters and also catches any panic and stores it into scope.

source

fn job_panicked(&self, err: Box<dyn Any + Send + 'static>)

source

fn maybe_propagate_panic(&self)

Auto Trait Implementations§

§

impl<'scope> !RefUnwindSafe for ScopeBase<'scope>

§

impl<'scope> Send for ScopeBase<'scope>

§

impl<'scope> Sync for ScopeBase<'scope>

§

impl<'scope> Unpin for ScopeBase<'scope>

§

impl<'scope> !UnwindSafe for ScopeBase<'scope>

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.