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)
4fn main() {
5 // Create two process handles.
6 let (mut p1, mut p2) = Dekker::new(0);
7
8 // Create a new thread and move one handle.
9 let other = thread::spawn(move || {
10 // Increment by one five times.
11 for _ in 0..5 {
12 println!("Incrementing in secondary thread.");
13 *p2.lock() += 1;
14 }
15 });
16
17 // Increment by one another five times.
18 for _ in 0..5 {
19 println!("Incrementing in main thread.");
20 *p1.lock() += 1;
21 }
22
23 // Join the threads.
24 other.join().unwrap();
25
26 println!("The counter is now at {}.", *p1.lock());
27}
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