too_many_threads.rs 765 B

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