據我所知,當多個執行緒嘗試讀取放置在同一快取行中的小而相鄰的資料時,就會發生錯誤共享:
#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
}
}
如果我動態創建陣列怎么辦?
int *arr = new int[NUM_THREADS];
如果我的陣列在堆上,會發生錯誤共享嗎?在這種情況下是否有一些快取行限制?
uj5u.com熱心網友回復:
記憶就是記憶。對于 cpu 來說,堆疊上的陣列與堆上的陣列完全相同。所以任何虛假共享問題都是一樣的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/485008.html
