请检查我对信号量的理解!
我理解信号量和二进制信号量计数背后的思想。然而,对我来说,使用signal()和wait()实现的自旋锁和信号量之间的区别有点混在一起。
例如,自旋锁基本上有两个值(二进制true/false表示锁定或未锁定)。因此,自旋锁基本上是一个二进制信号量,对吗?
任何试图在另一个进程进入临界区时进入临界区的进程在它被锁定时将无法进入,并且将旋转并不断检查锁定状态,直到它被解锁,然后能够进入并锁定它。
使用signal()和wait()函数的信号量本质上是从某种类型的变量中加减值。关于临界区有一个约束。只有当变量具有某种值时,它才会被打开。消费者进程的一个示例实现是wait( full ),然后当它满时执行,最后发出信号(Empty)。而生产者进程可以等待(空)并在empty为真时执行,然后当它完成时发出信号(Full)。
wait()和本质上在循环中“等待”的自旋锁有什么不同?
发布于 2010-09-06 14:36:58
与信号量不同,自旋锁可以在无法休眠的代码中使用,例如中断处理程序。
http://www.makelinux.net/ldd3/chp-5-sect-5.shtml
http://www.linuxjournal.com/article/5833
https://stackoverflow.com/questions/3649434
复制相似问题