test1.d 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. alias uint8 = ubyte;
  2. import std.stdio;
  3. //import std.parallelism : defaultPoolThreads;
  4. import std.concurrency : spawn;
  5. import core.time : Duration, dur;
  6. import core.thread;
  7. //void test1_worker(uint8 n){
  8. void test1_worker(int n){
  9. writeln("started worker = ", n);
  10. Thread.sleep(dur!"seconds"(120));
  11. writeln("stopped worker = ", n);
  12. }
  13. void test1_spawner(){
  14. uint8 i = 10; // 10 = 1.7 Mb RAM // 255 = 2.9 Mb RAM // 1000 = 6.6 Mb RAM // 10_000 = 55.1 Mb RAM // 100_000 = 180.3 -> 434.4 Mb RAM
  15. //int i = 100_000; // freeze with 180.3 -> 434.4 Mb RAM .. ((
  16. while(i > 0){
  17. spawn(&test1_worker, i);
  18. i--;
  19. }
  20. }
  21. /*
  22. // 10 threads (10 OS processes ?) - but with problem for 100_000 threads - but only on one CPU core (
  23. > make run
  24. ./vtest2
  25. started worker = 8
  26. started worker = 7
  27. started worker = 9
  28. started worker = 6
  29. started worker = 1
  30. started worker = 10
  31. started worker = 5
  32. started worker = 3
  33. started worker = 2
  34. started worker = 4
  35. stopped worker = 8
  36. stopped worker = 9
  37. stopped worker = 7
  38. stopped worker = 10
  39. stopped worker = 6
  40. stopped worker = 1
  41. stopped worker = 4
  42. stopped worker = 3
  43. stopped worker = 5
  44. stopped worker = 2
  45. hello here!
  46. */