3

まず、D が並列 foreach (基礎となるロジック) を作成する方法は?

int main(string[] args)
{
    int[] arr;
    arr.length = 100000000;
    /* Why it is working?, it's simple foreach which working with
       reference to int from arr, parallel function return ParallelForeach!R
       (ParallelForeach!int[]), but I don't know what it is.
       Parallel function is part od phobos library, not D builtin function, then what
       kind of magic is used for this? */
    foreach (ref e;parallel(arr))
    {
        e = 100;
    }
    foreach (ref e;parallel(arr))
    {
        e *= e;
    }
    return 0;
}

次に、単純な foreach より遅いのはなぜですか? 最後に、独自の taskPool を作成すると (そしてグローバルな taskPool オブジェクトを使用しないと)、プログラムは決して終了しません。なんで?

4

1 に答える 1