Это пример:
#include<iostream>
#include<thread>
using namespace std;
void f1(double& ret) {
ret=5.;
}
void f2(double* ret) {
*ret=5.;
}
int main() {
double ret=0.;
thread t1(f1, ret);
t1.join();
cout << "ret=" << ret << endl;
thread t2(f2, &ret);
t2.join();
cout << "ret=" << ret << endl;
}
И результат:
ret=0
ret=5
Скомпилирован с gcc 4.5.2 с и без -O2
Является ли это ожидаемым поведением?
Является ли эта гонка данных о программе бесплатной?
Спасибо