Operating system 内部原子函数的用法,而不是信号量

Operating system 内部原子函数的用法,而不是信号量,operating-system,Operating System,有人能解释一下,如何使用内部原子函数来替代信号量吗 最近我遇到了一个问题,cpu由于违反了信号量使用的规范顺序而停止。通过使用intrensic原子函数而不是获取信号量来锁定cpu全局内存,解决了此问题 我不明白这个内在的原子函数如何访问cpu全局内存 谢谢, Ivak。事实上,信号量也依赖于原子函数(在大多数实现中)-看看-这些类似于具有不同性能特征的低级信号量 然而,有时存在这样的情况,即临界段的操作非常简单,以至于可以原子化地完成—例如,递增计数器。还有更复杂的事情,比如将一个元素排队到一

有人能解释一下,如何使用内部原子函数来替代信号量吗

最近我遇到了一个问题,cpu由于违反了信号量使用的规范顺序而停止。通过使用intrensic原子函数而不是获取信号量来锁定cpu全局内存,解决了此问题

我不明白这个内在的原子函数如何访问cpu全局内存

谢谢,
Ivak。

事实上,信号量也依赖于原子函数(在大多数实现中)-看看-这些类似于具有不同性能特征的低级信号量

然而,有时存在这样的情况,即临界段的操作非常简单,以至于可以原子化地完成—例如,递增计数器。还有更复杂的事情,比如将一个元素排队到一个队列中,这可以通过原子来完成(尽管不仅仅是一个操作)

无论如何,在某些情况下,使用信号量可能会导致死锁,使用无锁操作不会锁定任何东西,因此不能违反锁定顺序

当然,原子操作并不是万能的,有些数据结构就是不能无锁,有时你在网络上做一个复杂的操作,在这个过程中你必须被锁定。。。信号量仍然是必需的

而使用原子的错误代码,即使你没有一个线程永远睡在信号灯上,你也可以以一个线程在循环中旋转而告终