Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 最好的方法(即快速和小型)是在GCC linux上实现atomic_fetch_ptr和atomic_set_ptr_C++_Linux_Gcc - Fatal编程技术网

C++ 最好的方法(即快速和小型)是在GCC linux上实现atomic_fetch_ptr和atomic_set_ptr

C++ 最好的方法(即快速和小型)是在GCC linux上实现atomic_fetch_ptr和atomic_set_ptr,c++,linux,gcc,C++,Linux,Gcc,在GCC-linux中有很多类似于原子操作的快速内存屏障 __同步\u获取\u和\u等 我想在内存中获取并设置一个指针值,这样在获取时就可以保证它是设置的值,因为有时赋值指令不是原子的。我不想要一个重量级的互斥,因为它太胖了 最好的方法是什么?不要在GCC中使用原子建筑。出于您的目的,请使用std::atomic,std::atomic\u compare\u exchange\u*。用谷歌搜索 关于你在回答类似问题时能学到的最好东西的信息我认为平台也很重要。我似乎记得有些东西在Aarch64上

在GCC-linux中有很多类似于原子操作的快速内存屏障 __同步\u获取\u和\u等

我想在内存中获取并设置一个指针值,这样在获取时就可以保证它是设置的值,因为有时赋值指令不是原子的。我不想要一个重量级的互斥,因为它太胖了


最好的方法是什么?

不要在GCC中使用原子建筑。出于您的目的,请使用
std::atomic
std::atomic\u compare\u exchange\u*
。用谷歌搜索


关于你在回答类似问题时能学到的最好东西的信息

我认为平台也很重要。我似乎记得有些东西在Aarch64上以不同的方式实现或缺失。另请参见GCC邮件列表中的内容。答案如下:)为什么GCC内部函数除了作为特定于编译器的内联代码外,还很糟糕?我认为他们对std:atomic的实现是围绕着他们的模板包装。