假设我有一个索引为0..n-1的数组。有没有办法选择每个线程将处理哪些单元格?例如线程0将处理单元格0和5,线程1将处理单元格1和6,依此类推。
最佳答案
您甚至可以更加明确:
#pragma omp parallel
{
int nth = omp_get_num_threads();
int ith = omp_get_thread_num();
for (int i=ith; i<n; i+=nth)
{
// handle cell i.
}
}
这应该完全满足您的要求:线程ith处理单元ith,ith + nth,ith + 2 * nth,ith + 3 * nth等。
关于c - OpenMP-用于循环线程分配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13663750/