1
由於this部分問題沒有解決,我讓它成爲一個單獨的問題:同步
#include<iostream>
#include<thread>
using namespace std;
void f2(double* ret) {
*ret=5.;
}
int main() {
double ret=0.;
thread t2(f2, &ret);
t2.join();
cout << "ret=" << ret << endl;
}
這是程序的數據競爭免費的嗎?
對於新的C++內存模型,是否有任何保證從線程t2
訪問變量ret
而線程main
是同步的?
我的意思是,如果程序在同一個內核上執行,很顯然t2
和main
的訪問不會發生衝突。
但是,如果t2
和main
在不同的內核上執行?
在main
繼續執行之前是否有任何保證核心的緩存將同步?
我很感激,如果有人可以提供相同的參考。
謝謝。
這裏沒有隱式的同步。 'join'是線程之間的顯式同步。 –
好的,我改了標題。 – Predrag