有没有不基于Mutex+CV的POSIX信号量的实现?

有没有不基于Mutex+CV的POSIX信号量的实现?

我读到 FreeBSD 内核中的信号量不如 Mutex+CV 高效这个手册页。我已经检查了 POSIX 信号量的内核和系统调用实现来源 代码并确认它们是在 Mutex+CV 之上实现的。

可能是我的一个误解POSIX 信号量作为实时同步原语,应该非常高效。但在阅读和看到这些之后,我不确定它们的效率应该有多高。

另外,我正在看书并发编程:算法、原理和基础。现在,我还没有读完第一部分,但它即将介绍在信号量之上实现的监视器(CV)。这让我想到,现实世界中一定有一种高效的信号量实现方式,而不是基于 Mutex+CV,这样效率更高。

有没有真实世界信号量的实现不是基于Mutex+CV吗?

答案1

Linux实现似乎没有使用CV,但它使用内核空间锁来保护信号量状态。

相关内容