mpsc.rs 1.0 KB

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