作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个耗时的循环,我想并行执行。伪代码:
for(int n = 0; n < 2048; n++)
{
output_data[n] = function(constant_input_data, n)
}
如何将这个循环分成 C 等份,其中 C 是 CPU 内核数?
在 C#、.net 中执行此操作的最佳和最优雅的方法是什么?
最佳答案
使用 Parallel.For TPL的
Parallel.For( 0, 2048, n=>
{
output_data[n] = function(constant_input_data, n);
});
TPL 尝试生成与第 1 个线程一样多的线程。你拥有的 cpu 内核,然后你的工作被划分为在这些线程上安排的任务。所以它是 可能 x 上的 2048 个任务。 x 为 no 的线程数。核心数。
关于c# - 给定每次迭代的恒定输入数据,如何将 FOR 循环分成 N 个偶数部分以并行执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9060249/
我是一名优秀的程序员,十分优秀!