【发布时间】:2018-07-29 12:51:29
【问题描述】:
据我所知,cpp11 中的 atomic 类型的原子操作保证是 aomtic 的。但是,假设在多核系统中,如果两个线程同时进行以下操作,结果会是1吗?(假设最初是atomic<int> val=0;)看起来结果肯定是2,但为什么呢?
val.fetch_add(1,std::memory_order_relaxed);
作为补充,假设另一种情况,如果thread1做val.load(2); thread2做val.load(3),结果似乎是2还是3,但也不确定是哪一个。
【问题讨论】:
标签: c++11 concurrency atomic memory-model memory-barriers