要并行执行循环,我正在使用:
int testValues[16]={5,2,2,10,4,4,2,100,5,2,4,3,29,4,1,52};
parallel_for (1, 100, 1, [&](int i){
int var1;
for (var1=1; var1<=20000; var1++) {
int var2, var3, var4;
double u[45],pl;
int values[16]={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
/* ... */
for (var4=0; var4<16; var4++) {
if (values[var4] != testValues[var4]) break;
}
/* ... */
}
}
我可以确定parallel_for
块内定义的所有变量(即var1
, var2
, var3
, var4
, u
, pl
, values
)对于每个循环迭代都具有局部范围,即不会在线程或循环迭代之间共享?
此外,只要多个线程testValues
只是读取(而不是写入),就可以安全地访问它们吗?