mpsc.rs 888 B

12345678910111213141516171819202122232425262728293031
  1. extern crate ralloc;
  2. use std::thread;
  3. use std::sync::mpsc;
  4. fn main() {
  5. {
  6. let (tx, rx) = mpsc::channel::<Box<u64>>();
  7. thread::spawn(move || {
  8. tx.send(Box::new(0xBABAFBABAF)).unwrap();
  9. tx.send(Box::new(0xDEADBEAF)).unwrap();
  10. tx.send(Box::new(0xDECEA5E)).unwrap();
  11. tx.send(Box::new(0xDEC1A551F1E5)).unwrap();
  12. });
  13. assert_eq!(*rx.recv().unwrap(), 0xBABAFBABAF);
  14. assert_eq!(*rx.recv().unwrap(), 0xDEADBEAF);
  15. assert_eq!(*rx.recv().unwrap(), 0xDECEA5E);
  16. assert_eq!(*rx.recv().unwrap(), 0xDEC1A551F1E5);
  17. }
  18. let (tx, rx) = mpsc::channel();
  19. for _ in 0..0xFFFF {
  20. let tx = tx.clone();
  21. thread::spawn(move || {
  22. tx.send(Box::new(0xFA11BAD)).unwrap();
  23. });
  24. }
  25. for _ in 0..0xFFFF {
  26. assert_eq!(*rx.recv().unwrap(), 0xFA11BAD);
  27. }
  28. }