【问题标题】:High-level Compare And Swap (CAS) functions?高级比较和交换 (CAS) 函数?
【发布时间】:2010-09-14 04:33:17
【问题描述】:

我想记录一下可用于比较和交换 (CAS) 原子原语的高级(即 C++ 而非内联汇编器)函数或宏...

例如,x86 上的 WIN32 在 <_intrin.h> 标头中有一系列函数 _InterlockedCompareExchange

【问题讨论】:

    标签: c++ multithreading multicore atomic


    【解决方案1】:

    GCC 也有一些 built-ins for atomic accesses

    【讨论】:

      【解决方案2】:

      已经有一系列关于这个主题的工作组论文提议对 C++ 标准库进行更改。 WG N2427C++ 原子类型和操作)是最新的,它对待定标准的第 29 节——原子操作库做出了贡献。

      【讨论】:

        【解决方案3】:

        glib 是 Linux 和 Unix 系统上的通用系统库(但也支持 Windows 和 Mac OS X),定义了 several atomic operations,包括 g_atomic_int_compare_and_exchangeg_atomic_pointer_compare_and_exchange

        【讨论】:

          【解决方案4】:

          java也有这个CAS操作

          here

          这有实际用途,例如多处理器系统中使用的lock-free hashtable

          【讨论】:

          • 问题标记为 C++ ;)
          【解决方案5】:

          MacOS X 有OSAtomic.h

          【讨论】:

            【解决方案6】:

            在 Solaris 上有“atomic.h”(即<sys/atomic.h>)。

            【讨论】:

              【解决方案7】:

              我会让其他人列出各种特定于平台的 API,但为了将来在 C++09 中参考,您将获得

              atomic_compare_exchange() 
              

              新的“原子操作库”中的操作。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2010-09-14
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多