diff options
| author | mo8it <mo8it@proton.me> | 2024-07-01 11:23:40 +0200 |
|---|---|---|
| committer | mo8it <mo8it@proton.me> | 2024-07-01 11:23:40 +0200 |
| commit | a13e3cd07f86e8668a326bae98568cced61f5015 (patch) | |
| tree | af1fcd946644ee4380bb8b66078a03005bdf532e /exercises/20_threads/threads3.rs | |
| parent | dfa2b44f718906dfac54816bb582880066c3dff0 (diff) | |
threads3 solution
Diffstat (limited to 'exercises/20_threads/threads3.rs')
| -rw-r--r-- | exercises/20_threads/threads3.rs | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/exercises/20_threads/threads3.rs b/exercises/20_threads/threads3.rs index 37810cf..30ac8dd 100644 --- a/exercises/20_threads/threads3.rs +++ b/exercises/20_threads/threads3.rs @@ -1,7 +1,4 @@ -use std::sync::mpsc; -use std::sync::Arc; -use std::thread; -use std::time::Duration; +use std::{sync::mpsc, thread, time::Duration}; struct Queue { length: u32, @@ -11,7 +8,7 @@ struct Queue { impl Queue { fn new() -> Self { - Queue { + Self { length: 10, first_half: vec![1, 2, 3, 4, 5], second_half: vec![6, 7, 8, 9, 10], @@ -19,20 +16,22 @@ impl Queue { } } -fn send_tx(q: Queue, tx: mpsc::Sender<u32>) -> () { +fn send_tx(q: Queue, tx: mpsc::Sender<u32>) { + // TODO: We want to send `tx` to both threads. But currently, it is moved + // into the frist thread. How could you solve this problem? thread::spawn(move || { for val in q.first_half { - println!("sending {:?}", val); + println!("Sending {val:?}"); tx.send(val).unwrap(); - thread::sleep(Duration::from_secs(1)); + thread::sleep(Duration::from_millis(250)); } }); thread::spawn(move || { for val in q.second_half { - println!("sending {:?}", val); + println!("Sending {val:?}"); tx.send(val).unwrap(); - thread::sleep(Duration::from_secs(1)); + thread::sleep(Duration::from_millis(250)); } }); } @@ -55,11 +54,11 @@ mod tests { let mut total_received: u32 = 0; for received in rx { - println!("Got: {}", received); + println!("Got: {received}"); total_received += 1; } - println!("total numbers received: {}", total_received); + println!("Number of received values: {total_received}"); assert_eq!(total_received, queue_length); } } |
