1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- alias uint8 = ubyte;
- import std.stdio;
- //import std.parallelism : defaultPoolThreads;
- import std.concurrency : receive, receiveOnly, receiveTimeout, send, spawn, thisTid, Tid, ThreadScheduler, FiberScheduler;
- import core.time : Duration, dur;
- import core.thread : Thread;
- //void test1_worker(uint8 n){
- void test1_worker(int n){
- writeln("started worker = ", n);
-
- Thread.sleep(dur!"seconds"(120));
-
- writeln("stopped worker = ", n);
- }
- void test1_spawner(){
- //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--;
- }
- */
-
- }
- /*
- // 10 threads (10 OS processes ?) - but with problem for 100_000 threads - but only on one CPU core (
- > make run
- ./vtest2
- started worker = 8
- started worker = 7
- started worker = 9
- started worker = 6
- started worker = 1
- started worker = 10
- started worker = 5
- started worker = 3
- started worker = 2
- started worker = 4
- stopped worker = 8
- stopped worker = 9
- stopped worker = 7
- stopped worker = 10
- stopped worker = 6
- stopped worker = 1
- stopped worker = 4
- stopped worker = 3
- stopped worker = 5
- stopped worker = 2
- hello here!
- */
|