pub struct Process<T> { /* private fields */ }
Expand description
Used to access the critical section from one of two concurrent processes.
Implementations§
Source§impl<T> Process<T>
impl<T> Process<T>
Sourcepub fn lock(&mut self) -> Guard<T>
pub fn lock(&mut self) -> Guard<T>
Acquire the lock for the critical section.
Examples found in repository?
examples/count.rs (line 13)
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
fn main() {
// Create two process handles.
let (mut p1, mut p2) = Dekker::new(0);
// Create a new thread and move one handle.
let other = thread::spawn(move || {
// Increment by one five times.
for _ in 0..5 {
println!("Incrementing in secondary thread.");
*p2.lock() += 1;
}
});
// Increment by one another five times.
for _ in 0..5 {
println!("Incrementing in main thread.");
*p1.lock() += 1;
}
// Join the threads.
other.join().unwrap();
println!("The counter is now at {}.", *p1.lock());
}
Trait Implementations§
Auto Trait Implementations§
impl<T> Freeze for Process<T>
impl<T> RefUnwindSafe for Process<T>where
T: RefUnwindSafe,
impl<T> !Sync for Process<T>
impl<T> Unpin for Process<T>
impl<T> UnwindSafe for Process<T>where
T: RefUnwindSafe,
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
Mutably borrows from an owned value. Read more