首页 > 解决方案 > 如何使用信号量 API 函数来执行正确的锁定/锁定?

问题描述

我有一些代码使用 C 中的信号量原语(semop、semtimedop)等进行锁定。实现此功能的接口函数称为 lock_table,它以信号量 ID 和编号作为参数。

该代码在尝试锁定有问题的信号量时使用 semtimedop 执行非阻塞调用。当信号量被锁定时,sem (semval) 的值将为 0。即:semtimedop 完成了它的工作。

问题:在我完成需要保护的代码并想要解锁信号量之后,是否应该使用 semctl 函数调用将 semval 重置回 1?我问我在网上找到的示例总是在创建它的 semget 之后将新创建的信号量的 semval 值设置为 1。

标签: clinuxsemaphore

解决方案


推荐阅读