我有一段简单的代码,我想让它多线程友好。
for(x=0;x<xLen;x++)
{
for(y=0;y<yLen;y++)
{
index = x*y+z;
a[index] = a[index-1] + a[index+1] +a[index-lenX] + a[index+lenX];
}
}
通常我会将 xLen 除以线程数,然后在自己的线程中运行每个部分。但是在这种情况下划分它会导致麻烦,并且在某些地方结果是基于错误的数据(例如 index-1 保存已经由它的邻居更新的值)。
以前有没有人遇到过这种问题?这种方程有什么已知的方法吗?