我有一个包含数据的数组x[]。还有一个“系统状态”的数组c[]。流程如下:
for(i = 1; i < N; i++)
{
a = f1(x[i] + c[i-1]);
b = f2(x[i] + c[i-1]);
c[i] = a + b;
}
在双核系统中使用两个并行线程查找f1
和f2
的值是否有有效的方法?我的意思是以下伪代码:
thread_1
{
for(i = 1; i < N; i++)
a = f1(x[i] + c[i-1]);
}
thread_2
{
for(i = 1; i < N; i++)
{
b = f2(x[i] + c[i-1]);
c[i] = a + b; //here we somehow get a{i} from thread_1
}
}
f1
和f2
不花费太多时间,但需要计算很多次,所以期望的加速比为x2。请参阅以下图表以获得图形表示:
寻找适用于Windows的代码示例。