Struct Lock

Source
pub struct Lock(/* private fields */);
Available on crate feature alloc only.
Expand description

A synchronization primitive that can be used to coordinate threads.

Lock is a type that represents a lock, which can be used to ensure that only one thread can access a shared resource at a time.

§Example

use utils_atomics::{Lock, lock};

let (lock, lock_sub) = lock();
std::thread::spawn(move || {
    // Do some work with the shared resource
    lock.wake();
});

// Do some work with the shared resource
lock_sub.wait();

Implementations§

Source§

impl Lock

Source

pub fn into_raw(self) -> *mut ()

Transforms the Lock into a raw mutable pointer.

Source

pub unsafe fn from_raw(raw: *mut ()) -> Self

Constructs a Lock from a raw mutable pointer.

§Safety

This function is unsafe because it assumes the provided pointer is valid and points to a Lock.

Source

pub fn silent_drop(self)

Drops the Lock without waking up the waiting threads. This method currently leaks memory when the std feature is disabled.

Source§

impl Lock

Source

pub fn wake(self)

Wakes up the waiting threads associated with the Lock.

§Example
use utils_atomics::{Lock, lock};

let (lock, lock_sub) = lock();
std::thread::spawn(move || {
    // Do some work with the shared resource
    lock.wake();
});

// Do some work with the shared resource
lock_sub.wait();

Trait Implementations§

Source§

impl Debug for Lock

Source§

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

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

impl Drop for Lock

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl Freeze for Lock

§

impl RefUnwindSafe for Lock

§

impl Send for Lock

§

impl Sync for Lock

§

impl Unpin for Lock

§

impl UnwindSafe for Lock

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> 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 = 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 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.