Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::collections::VecDeque;
- use std::{thread, time};
- use std::sync::{Arc, Mutex};
- type Que = Arc<Mutex<VecDeque<i64>>>;
- fn simulate_input(ev: &mut Que) {
- let interval = time::Duration::from_millis(100);
- for i in 0..10 {
- ev.lock().unwrap().push_back(i);
- thread::sleep(interval);
- }
- }
- fn simulate_render(ev: &mut Que) {
- loop {
- if let Some(i) = ev.lock().unwrap().pop_front() {
- eprintln!("{}", i);
- if i >= 9 {
- break;
- }
- }
- }
- }
- fn main() {
- let ev = Arc::new(Mutex::new(VecDeque::new()));
- let start = |f: fn(&mut Que)| {
- let mut ev = ev.clone();
- thread::spawn(move || {
- f(&mut ev);
- })
- };
- let render = start(simulate_render);
- let input = start(simulate_input);
- render.join().unwrap();
- input.join().unwrap();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement