Advertisement
Guest User

Untitled

a guest
Oct 17th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.67 KB | None | 0 0
  1. use std::sync::Arc;
  2. use std::sync::Mutex;
  3. use std::thread;
  4.  
  5. fn main() {
  6. let unimportant_variable = 3;
  7.  
  8. let my_shared_variable: Arc<Mutex<Option<Box<[i32]>>>> = Arc::new(Mutex::new(None));
  9. let my_shared_variable_tmp = Arc::clone(&my_shared_variable);
  10.  
  11. let thread_handle_1 = thread::spawn(move || {
  12. let mut var = my_shared_variable_tmp.lock().unwrap();
  13. *var = Some(function_returning_box(unimportant_variable));
  14. });
  15.  
  16. thread_handle_1.join().expect("joining thread 1");
  17.  
  18. println!(
  19. "{:?}",
  20. my_shared_variable.lock().expect("Error locking mutex")
  21. )
  22. }
  23.  
  24. fn function_returning_box(v: i32) -> Box<[i32]> {
  25. (0..v).collect()
  26. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement