ariel_os::thread::sync

Struct Lock

pub struct Lock { /* private fields */ }
Available on crate feature threading only.
Expand description

A basic locking object.

A Lock behaves like a Mutex, but carries no data. This is supposed to be used to implement other locking primitives.

Implementations§

§

impl Lock

pub const fn new() -> Lock

Creates new unlocked Lock.

pub const fn new_locked() -> Lock

Creates new locked Lock.

pub fn is_locked(&self) -> bool

Returns the current lock state.

true if locked, false otherwise

pub fn acquire(&self)

Get this lock (blocking).

If the lock was unlocked, it will be locked and the function returns. If the lock was locked, this function will block the current thread until the lock gets unlocked elsewhere.

§Panics

Panics if this is called outside of a thread context.

pub fn try_acquire(&self) -> bool

Get the lock (non-blocking).

If the lock was unlocked, it will be locked and the function returns true. If the lock was locked, the function returns false

pub fn release(&self)

Releases the lock.

If the lock was locked, and there were waiters, the first waiter will be woken up. If the lock was locked and there were no waiters, the lock will be unlocked. If the lock was not locked, the function just returns.

Trait Implementations§

§

impl Default for Lock

§

fn default() -> Lock

Returns the “default value” for a type. Read more
§

impl Sync for Lock

Auto Trait Implementations§

§

impl !Freeze for Lock

§

impl !RefUnwindSafe for Lock

§

impl Send 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.

§

impl<T, W> HasTypeWitness<W> for T
where W: MakeTypeWitness<Arg = T>, T: ?Sized,

§

const WITNESS: W = W::MAKE

A constant of the type witness
§

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

§

const TYPE_EQ: TypeEq<T, <T as Identity>::Type> = TypeEq::NEW

Proof that Self is the same type as Self::Type, provides methods for casting between Self and Self::Type.
§

type Type = T

The same type as Self, used to emulate type equality bounds (T == U) with associated type equality constraints (T: Identity<Type = U>).
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> Same for T

Source§

type Output = T

Should always be Self
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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V