i'm studying c++ memory sequence.. but it's very confusing.
For example.
void sumUp(std::atomic<int>& sum, std::vector<int>& val)
{
int tmpSum = 0;
for(auto i = 0; i < 100; ++i) tmpSum += val[i];
sum.fetch_add(tmpSum, std::memory_order_relaxed);
}
I don't understand that sum.fetch_add() operates after tmpSum += val[i]. Since it is not in order, can sum.fetch_add() operates before tmpSum += val[i]? So the sum is 0 possible?? Many thanks.
Aucun commentaire:
Enregistrer un commentaire