cross_thread_drop.rs 839 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. extern crate ralloc;
  2. mod util;
  3. use std::thread;
  4. #[test]
  5. #[ignore]
  6. fn cross_thread_drop() {
  7. util::multiply(|| {
  8. let mut join = Vec::new();
  9. for _ in 0..10 {
  10. let bx = Box::new(0x11FE15C001u64);
  11. join.push(thread::spawn(move || {
  12. util::acid(|| {
  13. assert_eq!(*bx, 0x11FE15C001);
  14. });
  15. }));
  16. }
  17. for i in join {
  18. i.join().unwrap();
  19. }
  20. });
  21. }
  22. #[test]
  23. fn cross_thread_drop_2() {
  24. util::multiply(|| {
  25. for _ in 0..10 {
  26. let bx =
  27. thread::spawn(|| Box::new(0x11FE15C001u64)).join().unwrap();
  28. thread::spawn(move || {
  29. util::acid(|| {
  30. assert_eq!(*bx, 0x11FE15C001);
  31. });
  32. });
  33. }
  34. });
  35. }