pub struct ParallelRunner<Command, CS> { /* private fields */ }Expand description
A runner that enables parallel event execution.
Events with a priority exceeding sync_priority_threshold are processed
synchronously on the main thread, while others are processed in parallel.
Implementations§
Source§impl<Command> ParallelRunner<Command, AlwaysContinueStrategy>
impl<Command> ParallelRunner<Command, AlwaysContinueStrategy>
Sourcepub fn new(skippable: bool, sync_priority_threshold: EventPriority) -> Self
pub fn new(skippable: bool, sync_priority_threshold: EventPriority) -> Self
Creates a new ParallelRunner using the AlwaysContinueStrategy.
§Arguments
skippable- Iftrue, the runner allows skipping empty ticks to optimize simulation time.sync_priority_threshold- Events with a priority greater than or equal to this threshold will be processed synchronously on the main thread.
Source§impl<Command, CS> ParallelRunner<Command, CS>
impl<Command, CS> ParallelRunner<Command, CS>
Sourcepub fn new_with_continue_strategy(
skippable: bool,
sync_priority_threshold: EventPriority,
continue_strategy: CS,
) -> Self
pub fn new_with_continue_strategy( skippable: bool, sync_priority_threshold: EventPriority, continue_strategy: CS, ) -> Self
Creates a new ParallelRunner with a custom ContinueStrategy.
§Arguments
skippable- Iftrue, the runner allows skipping empty ticks to optimize simulation time.sync_priority_threshold- Events with a priority greater than or equal to this threshold will be processed synchronously on the main thread.continue_strategy- The specific strategy used to determine how the simulation handles micro-step transitions.
Trait Implementations§
Source§impl<Command: Clone, CS: Clone> Clone for ParallelRunner<Command, CS>
impl<Command: Clone, CS: Clone> Clone for ParallelRunner<Command, CS>
Source§fn clone(&self) -> ParallelRunner<Command, CS>
fn clone(&self) -> ParallelRunner<Command, CS>
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<E, Command, M, CS: ContinueStrategy<E, M, ()>> Runner<E, M, CS> for ParallelRunner<Command, CS>
impl<E, Command, M, CS: ContinueStrategy<E, M, ()>> Runner<E, M, CS> for ParallelRunner<Command, CS>
Source§fn run<F>(
&mut self,
engine: Engine<E, M>,
model: M,
should_stop: F,
) -> SimulationResult<M, CS::Err>
fn run<F>( &mut self, engine: Engine<E, M>, model: M, should_stop: F, ) -> SimulationResult<M, CS::Err>
The core, low-level method for driving the simulation. Read more
Source§fn run_playback<F>(
&mut self,
engine: Engine<E, M>,
model: M,
duration: Duration,
should_stop: F,
) -> SimulationResult<M, CS::Err>
fn run_playback<F>( &mut self, engine: Engine<E, M>, model: M, duration: Duration, should_stop: F, ) -> SimulationResult<M, CS::Err>
Advances the simulation while inserting a specified delay between ticks. Read more
Source§fn run_do_ticks(
&mut self,
engine: Engine<E, M>,
model: M,
tick_count: TimeTick,
include_zero_tick: bool,
) -> SimulationResult<M, CS::Err>
fn run_do_ticks( &mut self, engine: Engine<E, M>, model: M, tick_count: TimeTick, include_zero_tick: bool, ) -> SimulationResult<M, CS::Err>
Advances the simulation until a specific tick count is reached. Read more
Source§fn run_until_idle(
&mut self,
engine: Engine<E, M>,
model: M,
) -> SimulationResult<M, CS::Err>
fn run_until_idle( &mut self, engine: Engine<E, M>, model: M, ) -> SimulationResult<M, CS::Err>
Automatically advances the simulation until the event queue is exhausted (idle).
Source§fn run_until_model_condition<F>(
&mut self,
engine: Engine<E, M>,
model: M,
should_stop_model_condition: F,
) -> SimulationResult<M, CS::Err>
fn run_until_model_condition<F>( &mut self, engine: Engine<E, M>, model: M, should_stop_model_condition: F, ) -> SimulationResult<M, CS::Err>
Advances the simulation until the model’s internal state satisfies a condition. Read more
Source§fn run_batch_parallel<MF, EF, F>(
&self,
count: usize,
engine_builder: EF,
model_builder: MF,
should_stop: F,
) -> Vec<SimulationResult<M, CS::Err>> ⓘ
fn run_batch_parallel<MF, EF, F>( &self, count: usize, engine_builder: EF, model_builder: MF, should_stop: F, ) -> Vec<SimulationResult<M, CS::Err>> ⓘ
Executes multiple simulation trials in parallel across multiple CPU cores. Read more
Auto Trait Implementations§
impl<Command, CS> Freeze for ParallelRunner<Command, CS>where
CS: Freeze,
impl<Command, CS> RefUnwindSafe for ParallelRunner<Command, CS>where
CS: RefUnwindSafe,
Command: RefUnwindSafe,
impl<Command, CS> Send for ParallelRunner<Command, CS>
impl<Command, CS> Sync for ParallelRunner<Command, CS>
impl<Command, CS> Unpin for ParallelRunner<Command, CS>
impl<Command, CS> UnsafeUnpin for ParallelRunner<Command, CS>where
CS: UnsafeUnpin,
impl<Command, CS> UnwindSafe for ParallelRunner<Command, CS>where
CS: UnwindSafe,
Command: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more