在GCC linux中有一堆快速内存屏障原子操作,如__sync_fetch_and_and等。
我想在内存中获取并设置一个指针值,以便保证它在获取时设置的值,因为有时赋值指令不是原子的。我不想要一个重量级的互斥量,因为它太胖了。
什么是最好的方法 ?
不要在GCC中使用原子建筑。使用std::atomic
,std::atomic_compare_exchange_*
达到您的目的。谷歌他们在https://cppreference.com。
有关在类似问题Which is more efficient, basic mutex lock or atomic integer?的答案中可以学到的最佳信息