まず、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 オブジェクトを使用しないと)、プログラムは決して終了しません。なんで?