有人可以帮助解释 C++ 中互锁变量访问和关键部分互锁增量之间的区别吗?谢谢,非常感谢,提前。
最佳答案
基本上,所有这些 InterlockedXXX
函数或多或少都是映射到相对较少(通常是一个)汇编指令的内在函数。这样的操作不能被中断,因此被称为原子性(原子性是在 CPU 级别实现的,至少如果这在目标平台上是可能的)。CRITICAL_SECTION
是一种同步原语,可以保护更长的部分。它确实会锁定,并且竞争线程将被迫等待,直到线程释放临界区的所有权。
临界区是操作系统原语,但它们仅限于单个进程。他们在 Windows 下的一个临界区的大哥是 Mutex
,它可以用于跨进程同步。
如果可以,请使用 InterlockedXXX
函数(例如,使用完整的临界区对象来保护单个计数器是没有意义的)。您可能想预先查看各种原型(prototype)及其用法。许多人使用 InterlockedCompareExchange
会做的关键部分......