mpsc.rs 896 B

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