cross_thread_drop.rs 813 B

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