cls*_*udt 4 parallel-processing multithreading d openmp
我正在学习D语言,因为我对它支持并行性感兴趣.这是我项目中的并行代码段:
import std.parallelism;
foreach (node v; taskPool.parallel(std.range.iota(z))) {
// call here
handle(v);
}
Run Code Online (Sandbox Code Playgroud)
如何控制并行工作的线程数?是否有相当于OpenMP的功能omp_set_num_threads?
您可以在第一次使用taskPool之前设置defaultPoolThreads来设置线程数,但它不允许您动态更改它.
http://dlang.org/phobos/std_parallelism.html#.defaultPoolThreads
此外,您可以显式创建新的TaskPools而不是使用默认值.根据您的尝试,这可能也是一种选择.
http://dlang.org/phobos/std_parallelism.html#.TaskPool.this