C++中的内存屏障/障碍:是否会增强或其他库拥有它们?

use*_*906 2 multithreading boost boost-thread memory-barriers

我现在正在阅读有关内存屏障和障碍的信息,以此来同步多线程代码并避免代码重新排序.

我通常在Linux OS下用C++开发,我boost大量使用libs,但是我找不到任何与之相关的类.你知道在增强中是否存在栅栏的记忆障碍,或者是否有办法实现相同的概念?如果不是我可以看看哪个好的图书馆?

Ant*_*ams 5

在boost中还没有低级别的内存障碍,但是有一个提议的boost.atomic库提供它们.

编译器提供它们自己的内部函数或库函数,例如gcc __sync_synchronize()_mm_mfence()Visual Studio.

C++ 0x库提供原子操作,包括形式的内存栅栏std::atomic_thread_fence.虽然自V4.4以来gcc提供了各种形式的C++ 0x原子,但V4.4或V4.5都不包括这种形式的栅栏.我的(商业)just::thread库提供了C++ 0x原子的完整实现,包括g ++ 4.3和4.4的围栏,以及Microsoft Visual Studio 2005,2008和2010.