diff options
author | Adam Carpenter <53hornet@gmail.com> | 2019-03-27 15:32:37 -0400 |
---|---|---|
committer | Adam Carpenter <53hornet@gmail.com> | 2019-03-27 15:32:37 -0400 |
commit | 67cdcc2e12118becb823e20a40cc2687f2b8425a (patch) | |
tree | ed92c3234b89079e6d4cf36f5e80c5ffa79def48 /concurrency/src | |
parent | e25482fca375d318a39c3b54db396b0db6e0b263 (diff) | |
download | learning-rust-67cdcc2e12118becb823e20a40cc2687f2b8425a.tar.xz learning-rust-67cdcc2e12118becb823e20a40cc2687f2b8425a.zip |
Started Rust in Action MEAP.
Diffstat (limited to 'concurrency/src')
-rw-r--r-- | concurrency/src/main.rs | 137 |
1 files changed, 0 insertions, 137 deletions
diff --git a/concurrency/src/main.rs b/concurrency/src/main.rs deleted file mode 100644 index 53417eb..0000000 --- a/concurrency/src/main.rs +++ /dev/null @@ -1,137 +0,0 @@ -use std::sync::Arc; -use std::rc::Rc; -use std::sync::Mutex; -use std::thread; -use std::sync::mpsc; -use std::time::Duration; - -fn main() { -// let handle = thread::spawn(|| { -// for i in 1..10 { -// println!("spawned: {}", i); -// thread::sleep(Duration::from_millis(1)); -// } -// }); -// -// for i in 1..5 { -// println!("main: {}", i); -// thread::sleep(Duration::from_millis(1)); -// } -// -// handle.join().unwrap(); - - - -// let v = vec![1, 2, 3]; -// -// let handle = thread::spawn(move || { -// println!("Here's a vector: {:?}", v); -// }); -// -// drop(v); -// handle.join().unwrap(); - - - -// let (tx, rx) = mpsc::channel(); -// -// thread::spawn(move || { -// let val = String::from("hi"); -// tx.send(val).unwrap(); -// dbg!(val); -// }); -// -// let received = rx.recv().unwrap(); -// dbg!(received); - - - -// let (tx, rx) = mpsc::channel(); -// -// thread::spawn(move || { -// let vals = vec![ -// String::from("the"), -// String::from("walking"), -// String::from("thread"), -// ]; -// -// for val in vals { -// tx.send(val).unwrap(); -// thread::sleep(Duration::from_secs(1)); -// } -// }); -// -// for received in rx { -// println!("got {}", received); -// } - - - -// let (tx, rx) = mpsc::channel(); -// -// let tx1 = mpsc::Sender::clone(&tx); -// thread::spawn(move || { -// let vals = vec![ -// String::from("the"), -// String::from("walking"), -// String::from("thread"), -// ]; -// -// for val in vals { -// tx1.send(val).unwrap(); -// thread::sleep(Duration::from_secs(1)); -// } -// }); -// -// thread::spawn(move || { -// let vals = vec![ -// String::from("welcome"), -// String::from("to"), -// String::from("woodberry"), -// String::from("!"), -// ]; -// -// for val in vals { -// tx.send(val).unwrap(); -// thread::sleep(Duration::from_secs(1)); -// } -// }); -// -// for received in rx { -// dbg!(received); -// } - - - -// let m = Mutex::new(5); -// -// { -// let mut num = m.lock().unwrap(); -// *num = 6; -// } -// -// println!("m = {:?}", m); - - - - let counter = Arc::new(Mutex::new(0)); - let mut handles = vec![]; - - for _ in 0..10 { - let counter = Arc::clone(&counter); - let handle = thread::spawn(move || { - let mut num = counter.lock().unwrap(); - - *num += 1; - }); - handles.push(handle); - } - - for handle in handles { - handle.join().unwrap(); - } - - dbg!(*counter.lock().unwrap()); - - println!("Done."); -} |