作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
请检查我对信号量的理解!
我理解计数信号量和二进制信号量背后的想法。然而,用 signal() 和 wait() 实现的自旋锁和信号量之间的区别对我来说有点混合在一起。
例如,自旋锁基本上有两个值(用于锁定或解锁的二进制真/假)。因此,自旋锁基本上是一个二进制信号量,对吗?
当另一个进程在内部时,任何试图进入临界区的进程都将无法在其被锁定时进入,并且将旋转并不断检查锁定状态,直到它被解锁,然后才能进入并锁定它。
使用 signal() 和 wait() 函数的信号量本质上是从某种变量中添加或减去一个值。临界区有一个限制。仅当变量具有某种值时才会打开它。消费者进程的一个示例实现是 wait(full),然后当它已满时执行,最后它发出 signal(empty) 信号。而生产者进程可能会等待(空)并在空为真时执行,然后当它完成时发出信号(满)。
wait() 和本质上在循环中“等待”的自旋锁有什么区别?
最佳答案
Unlike semaphores, spinlocks may be used in code that cannot sleep, such as interrupt handlers.
关于semaphore - 卡耐基梅隆大学 : Semaphores,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3649434/
我是一名优秀的程序员,十分优秀!