回到我作为 BeOS 程序员的日子里,我读了 Benoit Schillings 的这篇文章,描述了如何创建一个“Benaphore”:一种使用原子变量来强制执行关键部分的方法,从而避免了在常见的情况下获取/释放互斥锁的需要(无争用)情况。
我认为这相当聪明,而且您似乎可以在任何支持原子增量/减量的平台上执行相同的技巧。
另一方面,这看起来可以很容易地包含在标准互斥锁实现本身中......在这种情况下,在我的程序中实现这个逻辑将是多余的并且不会提供任何好处。
有谁知道现代锁定 API(例如 pthread_mutex_lock()/pthread_mutex_unlock())是否在内部使用这个技巧?如果没有,为什么不呢?