使用互锁的Winapi功能而不是任何库的优点和缺点是在Win32平台上提供原子操作的?

便携性不是问题。

有帮助吗?

解决方案

如果不关心可移植性,那么您基本上是决定要更信任谁才能正确解决这个问题。库通常旨在提供可移植性。否则,它很难与OS提供的实施竞争,该实施已经进行了15年以上的战斗。

查看 这个线程 查看一个示例,说明明显的实现实际上不是最好的。

其他提示

即使在没有CPU支持锁定操作的情况下,互锁的Winapi功能也可以在旧处理器上工作。 386甚至486,除非您仍然支持Win9x和较旧的NT,否则今天并不是一个问题。

它可能依赖于所讨论的特定原子库。

具有特定后端的好库可能最终会通过几个ASM指令实施x86 指导并完成他们的工作。并假设库本身是便携式的,随后使您的代码便携式。

天真的原子实施 可能 做一些较重的事情,例如使用Mutex保护普通变量。我不知道有什么做的 - 只是提出争论。

因此,鉴于您既定的不通用性要求,使用Win32功能应该很好。或者,继续使用原子版本,但也许会查看实际实现。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top