too_many_threads.rs 677 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. extern crate ralloc;
  2. mod util;
  3. use std::thread;
  4. fn make_thread() -> thread::JoinHandle<()> {
  5. thread::spawn(|| {
  6. let mut vec = Vec::new();
  7. for i in 0..0xFFF {
  8. util::acid(|| {
  9. vec.push(0);
  10. vec[i] = i;
  11. });
  12. }
  13. for i in 0..0xFFF {
  14. assert_eq!(vec[i], i);
  15. }
  16. })
  17. }
  18. #[test]
  19. fn multithread_join_handle_vec() {
  20. util::multiply(|| {
  21. let mut join = Vec::new();
  22. for _ in 0..20 {
  23. util::acid(|| {
  24. join.push(make_thread());
  25. });
  26. }
  27. for i in join {
  28. i.join().unwrap();
  29. }
  30. });
  31. }