在检查Mutex解锁代码时,我发现一些在互斥变量中添加1而不是直接将其设置为“1”。这有什么优点/缺点吗?
由于
答案 0 :(得分:0)
我想知道您是否有可能在审核mutex和semaphore资源访问控制之间的区别。
修改
这就是这两个OP所需的CPU周期。据我所知add
使用的CPU周期少于mov
。但是,它再次依赖于拱形且有问题。另外,请记住,汇编程序选择如何编写更高级别的语言指令非常依赖于周围的指令
答案 1 :(得分:0)
无论使用什么操作,它都是原子的,这一点非常重要。对我来说,做一个集合而不是添加是最有意义的,特别是如果有一个测试和设置指令或实现。
我找到了x86架构的TestAndSet函数的this实现。这里它使用了一个集合(mov
)但它也可以使用add
或inc
来执行此操作,但它需要eax
为0
用于原子性的xchg
指令。我认为要求eax
为零可能是一个骗局。