【发布时间】:2011-02-25 15:22:45
【问题描述】:
由于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 和线程 main 访问变量 ret 是同步的?
我的意思是,如果程序在同一个内核上执行,来自t2 和main 的访问显然不会发生冲突。
但是如果t2 和main 在不同的内核上执行呢?
是否保证核心的缓存在main 继续执行之前会同步?
如果有人能提供相同的参考资料,我将不胜感激。
谢谢。
【问题讨论】:
-
这里没有隐式同步。
join是线程之间的显式同步。 -
好的,我改了标题。
标签: c++ multithreading c++11 race-condition