使用Interlocked winapi函数而不是任何库在Win32平台上提供原子操作有哪些优点和缺点?
便携性不是问题。
答案 0 :(得分:4)
如果可移植性不是一个问题,那么你基本上是要决定你更信任谁来做到这一点。库通常旨在提供可移植性。否则,它很难与OS提供的实施竞争,这种实施已经过15年的战斗强化。
检查this thread以查看显而易见的实施方式实际上并不是最好的示例。
答案 1 :(得分:2)
即使没有CPU支持锁定操作,联锁的winapi功能也可以在旧处理器上运行。 386和486,今天不是真正的问题,除非你仍然支持Win9x和更旧的NT。
答案 2 :(得分:0)
它可能取决于所讨论的特定原子库。
具有特定后端的好库可能最终会执行几条ASM指令,以发出x86 lock 指令并完成其工作。假设库本身是可移植的,随后可以使代码可移植。
天真的原子实现可能做一些比使用互斥锁来保护正常变量更重的东西。我不知道有什么用 - 只是为了论证。
因此,根据您声明的非可移植性要求,使用Win32函数应该没问题。或者,继续使用Atomic版本,但也许看一下实际的实现。