Kai*_*kha 0 c++ multithreading openmp multiprocessing false-sharing
据我所知,当多个线程尝试读取位于同一缓存行中的小块且相邻的数据时,就会发生错误共享:
#include <omp.h>
#define NUM_THREADS 4
int main() {
int arr[NUM_THREADS];
# pragma omp parallel num_threads(NUM_THREADS)
{
const int id = omp_get_thread_num();
arr[id] // doing something with it
}
}
Run Code Online (Sandbox Code Playgroud)
如果我动态创建数组怎么办?
int *arr = new int[NUM_THREADS];
Run Code Online (Sandbox Code Playgroud)
如果我的数组位于堆上,是否会发生错误共享?在这种情况下是否有一些缓存行限制?
归档时间: |
|
查看次数: |
223 次 |
最近记录: |