作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
有人可以帮助解释 C++ 中的互锁变量访问和临界区互锁增量之间的区别吗?谢谢,非常感谢,提前。
最佳答案
基本上,所有这些 InterlockedXXX
函数或多或少都是映射到相对较少(通常是一条)汇编指令的内部函数。这样的操作不能被中断,因此被称为原子性的(原子性是在 CPU 级别实现的,至少如果这在目标平台上是可能的)。
CRITICAL_SECTION
是一种可以保护较长部分的同步原语。它确实会锁定并且竞争线程将被迫等待,直到线程释放临界区的所有权。
关键部分是操作系统原语,但它们仅限于单个进程。他们在Windows下临界区的老大哥是一个Mutex
,可以用来跨进程同步。
如果可以,请使用InterlockedXXX
函数(例如,使用完整的临界区对象来保护单个计数器是没有意义的)。您可能想提前查看各种原型(prototype)及其用法。许多人使用临界区,而 InterlockedCompareExchange
会做...
关于c++ - 互锁变量访问和临界区互锁增量之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6462141/
我是一名优秀的程序员,十分优秀!