我正在学习 D 语言,因为我对它对并行性的支持很感兴趣。这是我项目中的一个并行代码段:
import std.parallelism;
foreach (node v; taskPool.parallel(std.range.iota(z))) {
// call here
handle(v);
}
如何控制并行工作的线程数?是否有等效的 OpenMP 功能omp_set_num_threads
?
我正在学习 D 语言,因为我对它对并行性的支持很感兴趣。这是我项目中的一个并行代码段:
import std.parallelism;
foreach (node v; taskPool.parallel(std.range.iota(z))) {
// call here
handle(v);
}
如何控制并行工作的线程数?是否有等效的 OpenMP 功能omp_set_num_threads
?
您可以在第一次使用 taskPool 之前设置 defaultPoolThreads 来设置线程数,但它不允许您即时更改它。
http://dlang.org/phobos/std_parallelism.html#.defaultPoolThreads
此外,您可以显式创建新的 TaskPools 而不是使用默认值。根据您要执行的操作,这也可能是一种选择。