Skip to main content

RemoteFreeBatch

Struct RemoteFreeBatch 

Source
pub struct RemoteFreeBatch<'a> { /* private fields */ }
Expand description

Collects frees and publishes remote frees in batches grouped by owning worker.

Frees owned by the worker represented by the Allocator handle that created the batch are reclaimed immediately. All other frees are linked into intrusive chains and published when Self::flush is called or the batch is dropped.

Implementations§

Source§

impl<'a> RemoteFreeBatch<'a>

Source

pub unsafe fn free(&mut self, ptr: NonNull<u8>)

Free a block of memory from this allocator region.

Locally owned allocations are reclaimed immediately. Remote frees remain private to this batch until it is flushed or dropped.

§Safety
  • ptr must point to a valid allocation in this allocator region.
  • The ptr must not have been freed before or added to another free batch.
Source

pub unsafe fn free_offset(&mut self, offset: usize)

Free a block of memory from this allocator region.

Locally owned allocations are reclaimed immediately. Remote frees remain private to this batch until it is flushed or dropped.

§Safety
  • offset must identify a valid allocation in this allocator region.
  • The offset must not have been freed before or added to another free batch.
Source

pub fn flush(&mut self)

Publish all remote frees currently held by this batch.

The batch may be reused after flushing. Capacity allocated for destination workers is retained.

Trait Implementations§

Source§

impl Drop for RemoteFreeBatch<'_>

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§

§

impl<'a> !RefUnwindSafe for RemoteFreeBatch<'a>

§

impl<'a> !Send for RemoteFreeBatch<'a>

§

impl<'a> !Sync for RemoteFreeBatch<'a>

§

impl<'a> !UnwindSafe for RemoteFreeBatch<'a>

§

impl<'a> Freeze for RemoteFreeBatch<'a>

§

impl<'a> Unpin for RemoteFreeBatch<'a>

§

impl<'a> UnsafeUnpin for RemoteFreeBatch<'a>

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> 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, 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, <T as TryFrom<U>>::Error>

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.