GCC 最近对原子操作的支持(如此处所述)非常好,是我们需要的 90%。不幸的是,我们的一些产品仍然需要在 Windows 上运行,因此我们也需要在 Windows 上进行原子整数操作。
过去,我们对所有平台都有自定义的汇编语言实现,但我想将所有 *nix 平台转移到 GCC 支持的操作上,我想到也许还有一种更标准的方法来做到这一点现在也在 Windows 上...
在 Windows 上是否有官方认可的方法(除了自己用汇编语言实现它们)?
GCC 最近对原子操作的支持(如此处所述)非常好,是我们需要的 90%。不幸的是,我们的一些产品仍然需要在 Windows 上运行,因此我们也需要在 Windows 上进行原子整数操作。
过去,我们对所有平台都有自定义的汇编语言实现,但我想将所有 *nix 平台转移到 GCC 支持的操作上,我想到也许还有一种更标准的方法来做到这一点现在也在 Windows 上...
在 Windows 上是否有官方认可的方法(除了自己用汇编语言实现它们)?
您需要联锁功能。
这取决于您需要哪一个——我认为 Windows 上没有(预构建的)每个实现(可能在 gcc 中除外),但其中一些已经存在了很长一段时间。Windows 有 InterlockedIncrement、InterlockedDecrement、InterlockedAdd、InterlockedOr、InterlockedXor 等。