假设我们已经为信号量和 Peek() 定义了
操作返回信号量的值。Up()
、Down()
和 Peek()
操作
Peek()
操作的优缺点是什么?
如何有效地使用Peek()
操作?
最佳答案
peek
函数对于同步是无用的。它只允许查看当前状态,但不应采取任何操作,因为在查看之后,信号量已经可以立即更改。它可以用于监控来解决死锁,但这是非常棘手的。如评论中所述,它可以帮助调试。
try
函数更有用。这只会在可能的情况下关闭
信号量,如果不可能则返回失败的条件。这样,如果信号量是空闲的,就可以执行操作,如果不是(基于轮询),则不会阻塞。大多数时候,使用仅包含 up
和 down
的不同线程会产生更好的结果(至少是更清晰的代码)
关于c++ - 信号量的 Peek 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20090340/