221V 3 недель назад
Родитель
Сommit
8572d49b80
2 измененных файлов с 44 добавлено и 10 удалено
  1. 6 6
      vtest2/source/app.d
  2. 38 4
      vtest2/source/test1.d

+ 6 - 6
vtest2/source/app.d

@@ -1,7 +1,7 @@
 
 import std.stdio;
 
-/*
+/**/
 // test1
 //import std.parallelism : defaultPoolThreads;
 import std.concurrency : spawn;
@@ -9,7 +9,7 @@ import core.time : Duration, dur;
 import core.thread : Thread;
 
 import test1 : test1_spawner;
-*/
+/**/
 
 
 /*
@@ -22,7 +22,7 @@ import test2 : test2_spawner;
 */
 
 
-/**/
+/*
 // test3
 //import std.parallelism : defaultPoolThreads;
 import std.concurrency : spawn, send;
@@ -30,7 +30,7 @@ import core.time : Duration, dur;
 import core.thread : Thread;
 
 import test3 : test3_spawner;
-/**/
+*/
 
 
 void main(){
@@ -38,9 +38,9 @@ void main(){
   //defaultPoolThreads(8); // changes nothing because all threads works on 1 CPU core, not on multicores..(
   //writeln("defaultPoolThreads = ", defaultPoolThreads()); // 8
   
-  //spawn(&test1_spawner); // test1 run
+  spawn(&test1_spawner); // test1 run
   //spawn(&test2_spawner); // test2 run
-  spawn(&test3_spawner); // test3 run
+  //spawn(&test3_spawner); // test3 run
   
   //Thread.sleep(dur!"seconds"(125));
   Thread.sleep(dur!"seconds"(30));

+ 38 - 4
vtest2/source/test1.d

@@ -3,9 +3,9 @@ alias uint8  = ubyte;
 
 import std.stdio;
 //import std.parallelism : defaultPoolThreads;
-import std.concurrency : spawn;
+import std.concurrency : receive, receiveOnly, receiveTimeout, send, spawn, thisTid, Tid, ThreadScheduler, FiberScheduler;
 import core.time : Duration, dur;
-import core.thread;
+import core.thread : Thread;
 
 
 //void test1_worker(uint8 n){
@@ -19,14 +19,48 @@ void test1_worker(int n){
 
 
 void test1_spawner(){
-  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
-  //int i = 100_000; // freeze with 180.3 -> 434.4 Mb RAM .. ((
+  //uint8 i = 10; // 10 = 1.8 Mb RAM // 255 = 2.9 Mb RAM // 1000 = 6.1 Mb RAM // 10_000 = 47.9 Mb RAM // 100_000 = 180.3 -> 434.4 Mb RAM ,, 161.8 -> 607.7 Mb RAM
+  int i = 100_000; // freeze with 180.3 -> 434.4 Mb RAM .. (( 161.8 -> 607.7 Mb RAM
+  //int i = 1_000;
   
+  auto scheduler = new ThreadScheduler();
+  //auto scheduler = new FiberScheduler;
+  
+  //scheduler.start({});
+  
+  while(i > 0){
+    scheduler.spawn({
+      writeln("thread ", thisTid(), " == i = ", i);
+      //Thread.sleep(dur!"seconds"(3));
+      Thread.sleep(dur!"seconds"(120));
+    });
+    i--;
+  }
+  
+  
+  /*
+  //while(i > 0){ // 10 CPU' cores ?
+  foreach(i2; 0..10){ // 10 CPU' cores ?
+    //auto i2 = i;
+    scheduler.spawn({
+      foreach(j; 0..10){ // 10 threads per CPU core ?
+        writeln("thread ", thisTid(), " == i, j = ", i2, " ", j);
+        Thread.sleep(dur!"seconds"(3));
+        //Thread.sleep(dur!"seconds"(120));
+      }
+    });
+    //i--;
+  }
+  */
+  
+  /*
   while(i > 0){
     spawn(&test1_worker, i);
     
     i--;
   }
+  */
+  
 }