c++ - 信号量的 Peek 操作

标签 c++ c operating-system semaphore

假设我们已经为信号量和 Peek() 定义了 Up()Down()Peek() 操作 操作返回信号量的值。

Peek() 操作的优缺点是什么?

如何有效地使用Peek()操作?

最佳答案

peek 函数对于同步是无用的。它只允许查看当前状态,但不应采取任何操作,因为在查看之后,信号量已经可以立即更改。它可以用于监控来解决死锁,但这是非常棘手的。如评论中所述,它可以帮助调试。

try 函数更有用。这只会在可能的情况下关闭 信号量,如果不可能则返回失败的条件。这样,如果信号量是空闲的,就可以执行操作,如果不是(基于轮询),则不会阻塞。大多数时候,使用仅包含 updown 的不同线程会产生更好的结果(至少是更清晰的代码)

关于c++ - 信号量的 Peek 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20090340/

相关文章:

c - C 中的运算符 PlusPlus

go - CTRL + C 未被捕获

api - Shell、Kernel 和 API 有什么区别

c++ - 使用fork()和boost::asio的进程池

C++应用程序仅在使用本地Windows调试器时运行,而不是哪个exe文件

c - 如何加密C中的头文件

c - 了解 C 程序

c - 当堆栈增长时,谁负责向操作系统请求页面?

c++ - 附加到容器

c# - 为什么我的测试项目没有出现在测试资源管理器中