首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CMU:信号量

CMU:信号量
EN

Stack Overflow用户
提问于 2010-09-06 14:28:41
回答 1查看 256关注 0票数 3

请检查我对信号量的理解!

我理解信号量和二进制信号量计数背后的思想。然而,对我来说,使用signal()和wait()实现的自旋锁和信号量之间的区别有点混在一起。

例如,自旋锁基本上有两个值(二进制true/false表示锁定或未锁定)。因此,自旋锁基本上是一个二进制信号量,对吗?

任何试图在另一个进程进入临界区时进入临界区的进程在它被锁定时将无法进入,并且将旋转并不断检查锁定状态,直到它被解锁,然后能够进入并锁定它。

使用signal()和wait()函数的信号量本质上是从某种类型的变量中加减值。关于临界区有一个约束。只有当变量具有某种值时,它才会被打开。消费者进程的一个示例实现是wait( full ),然后当它满时执行,最后发出信号(Empty)。而生产者进程可以等待(空)并在empty为真时执行,然后当它完成时发出信号(Full)。

wait()和本质上在循环中“等待”的自旋锁有什么不同?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-06 14:36:58

与信号量不同,自旋锁可以在无法休眠的代码中使用,例如中断处理程序。

http://www.makelinux.net/ldd3/chp-5-sect-5.shtml

http://www.linuxjournal.com/article/5833

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3649434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档