Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.87 KB | None | 0 0
  1. use std::collections::VecDeque;
  2. use std::{thread, time};
  3. use std::sync::{Arc, Mutex};
  4.  
  5. type Que = Arc<Mutex<VecDeque<i64>>>;
  6.  
  7. fn simulate_input(ev: &mut Que) {
  8. let interval = time::Duration::from_millis(100);
  9. for i in 0..10 {
  10. ev.lock().unwrap().push_back(i);
  11. thread::sleep(interval);
  12. }
  13. }
  14.  
  15. fn simulate_render(ev: &mut Que) {
  16. loop {
  17. if let Some(i) = ev.lock().unwrap().pop_front() {
  18. eprintln!("{}", i);
  19. if i >= 9 {
  20. break;
  21. }
  22. }
  23. }
  24. }
  25.  
  26. fn main() {
  27. let ev = Arc::new(Mutex::new(VecDeque::new()));
  28.  
  29. let start = |f: fn(&mut Que)| {
  30. let mut ev = ev.clone();
  31. thread::spawn(move || {
  32. f(&mut ev);
  33. })
  34. };
  35.  
  36. let render = start(simulate_render);
  37. let input = start(simulate_input);
  38.  
  39. render.join().unwrap();
  40. input.join().unwrap();
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement