Skip to main content

SimThread

Struct SimThread 

Source
pub struct SimThread { /* private fields */ }
Expand description

Handle on a running CPU simulation.

The sim runs on its own thread on native targets. In a browser Self::update steps it from the host’s frame loop.

Implementations§

Source§

impl SimThread

Source

pub fn new( state: Box<dyn SimState>, target_tps: f64, wake: Option<WakeFn>, faults: FaultSink, ) -> Self

Starts a paused runner over state, capped at target_tps ticks per second.

wake is None only for a headless caller that polls on its own schedule.

A panic out of the loop is stored in faults. The GPU runner reads the same sink off its GpuContext.

Source

pub fn send(&mut self, cmd: SimCommand)

Sends a command to the loop.

Source

pub fn take_snapshot(&mut self) -> Option<Snapshot>

Takes the latest snapshot, or None when nothing new has been published since the last take.

Source

pub fn recycle(&mut self, snap: Snapshot)

Stores a taken snapshot as the spare for the next publish to refill.

This is only an optimisation. Dropping the snapshot instead only means the next publish allocates.

Source

pub fn play(&mut self)

Source

pub fn pause(&mut self)

Source

pub fn step_once(&mut self)

Source

pub fn set_schedule(&mut self, schedule: Schedule)

Source

pub fn run_to(&mut self, tick: u64)

Source

pub fn update(&mut self, dt: f64)

Advances the sim when the driver runs inside the frame loop, and does nothing when the driver has its own thread.

Trait Implementations§

Source§

impl Debug for SimThread

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Drop for SimThread

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where 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> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

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 T
where U: Into<T>,

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

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

Source§

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.
Source§

impl<T> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,

Source§

impl<T> WasmNotSync for T
where T: Sync,