too_many_threads.rs 687 B

12345678910111213141516171819202122232425262728293031323334353637383940
  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. #[ignore]
  20. fn multithread_join_handle_vec() {
  21. util::multiply(|| {
  22. let mut join = Vec::new();
  23. for _ in 0..20 {
  24. util::acid(|| {
  25. join.push(make_thread());
  26. });
  27. }
  28. for i in join {
  29. i.join().unwrap();
  30. }
  31. });
  32. }