信号量如何工作?

信号量如何工作?,第1张

信号量如何工作?

调为0时不起作用。3点时可以通话。(我在想Java)。

我再添加一些。许多人认为锁是(二进制)信号量(即-N =
1,因此信号量的值为0(保持)或1(不保持))。但这不是很正确。锁具有“所有权”的概念,因此它可能是“可重入的”。这意味着持有一个锁的线程被允许再次调用lock()(有效地将计数从0移到-1),因为该线程已经持有该锁并被允许“重新输入”。锁也可以是不可重入的。锁持有者应调用与lock()相同次数的unlock()。

信号量没有所有权的概念,因此尽管可以获取尽可能多的许可,但它们不能重入。这意味着线程在遇到值0时需要阻塞,直到有人增加信号量为止。

另外,在我所看到的(Java)中,您可以将信号量增加到大于N,这也与所有权有关:信号量没有所有权概念,因此任何人都可以给它更多许可。与线程不同,在线程中,只要线程在不持有锁的情况下调用unlock(),那都是错误。(在Java中,它将引发异常)。

希望这种思考方式有所帮助。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5034373.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存