便携式c ++原子交换(Windows - GNU / Linux - MacOSX)

时间:2010-02-23 14:12:47

标签: c++ portability swap atomicity

是否有免费可移植(Windows,GNU / Linux和MacOSX)库提供无锁原子交换功能

如果没有,那么这些平台将如何实施? (x86与VC ++或g ++)

由于

3 个答案:

答案 0 :(得分:2)

lock-free中有一个boost图书馆等待审核。此外,如果您深入了解boost smart pointers库的源代码,您会发现内联多个平台的原子操作。另一个 - 英特尔Threading Building Blocks已实施atomic<>模板。

答案 1 :(得分:1)

取决于您想要交换的内容。在x86的汇编程序中,你可能会得到一个“接近”的原子xor交换,否则我会选择一些使用锁定的解决方案,这在Win32 / {Linux,Darwin}上会有所不同。

如果您正在寻找图书馆,请查看APR(Apache Portable Runtime) - http://apr.apache.org/

答案 2 :(得分:1)

Boost拥有a set of macros以便携式方式促进无锁操作。