在Win32平台上使用Interlocked winapi函数代替任何提供原子操作的库有什么优缺点?
便携性不是问题。
如果可移植性不是问题,那么您基本上可以决定您更信任谁来做到这一点。库通常旨在提供可移植性。否则,它很难与操作系统提供的实施竞争,该实施已经经历了 15 年多的考验。
检查此线程以查看一个示例,说明显而易见的实现实际上并不是最好的。
即使没有 CPU 支持锁定操作,Interlocked winapi 函数也可以在旧处理器上工作。386 甚至可能是 486,除非您仍然支持 Win9x 和旧版 NT,否则今天不是真正的问题。
它可能取决于所讨论的特定原子库。
具有特定后端的优秀库可能最终会以相同的 ASM 指令实现来发出 x86锁定指令并完成它们的工作。并假设库本身是可移植的,随后使您的代码可移植。
一个天真的原子实现可能会做一些更重的事情,比如使用互斥锁来保护普通变量。我不知道有什么这样做的——只是提出论点。
因此,鉴于您声明的不可移植性要求,使用 Win32 函数应该没问题。或者,继续使用 Atomic 版本,但也许看看实际的实现。