Enum file_guard::Lock
source · pub enum Lock {
Shared,
Exclusive,
}
Expand description
The type of a lock operation.
This is used to specify the desired lock type when used with lock()
and try_lock()
, and it is the successful result type returned by
lock_any()
.
Variants§
A shared lock may be concurrently held by multiple processes while preventing future exclusive locks its lifetime.
The shared lock type cannot be obtained while an exclusive lock is held by another process. When successful, a shared lock guarantees that only one or more shared locks are concurrently held, and that no exclusive locks are held.
This lock type–often referred to as a read lock–may be used as a means of signaling read integrity. When used cooperatively, they ensure no exclusive lock is held, and thus, no other process may be writing to a shared resource.
Exclusive
An exclusive lock may only be held by a single process.
The exclusive lock type can neither be obtained while any shared locks are held or while any other exclusive locks are held. This linearizes the sequence of processes attempting to acquire an exclusive lock.
This lock type–also known as a write lock–may be used as a means of ensuring write exclusivity. In a cooperative locking environment, all access to a shared resource is halted until the exlusive lock is released.
Trait Implementations§
source§impl PartialEq for Lock
impl PartialEq for Lock
impl Copy for Lock
impl StructuralPartialEq for Lock
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> 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
source§impl<T> CloneToUninit for Twhere
T: Copy,
impl<T> CloneToUninit for Twhere
T: Copy,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)