12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- alias uint8 = ubyte;
- alias uint64 = ulong;
- import std.stdio;
- import core.thread : Fiber;
- uint64 fact(uint64 n){
- return fact(n, 1);
- }
- uint64 fact(uint64 n, uint64 a){
- if(n == 0){
- return a;
- }else{
- return fact(n - 1, n * a);
- }
- }
- void test7_spawner(){
- uint64[] inputs = [5, 7, 10, 3, 8];
- uint64[] results = new uint64[inputs.length];
-
- Fiber[] fibers;
- fibers.length = inputs.length;
-
- for(int i = 0; i < inputs.length; i++){
- int index = i;
-
- fibers[i] = new Fiber({
- results[index] = fact(inputs[index]);
- });
-
- fibers[i].call();
- writefln("fact(%s) = %s", inputs[i], results[i]);
- }
- }
- /*
- ./vtest2
- hello here!
- fact(5) = 120
- fact(7) = 5040
- fact(10) = 3628800
- fact(3) = 6
- fact(8) = 40320
- */
|