gpt4 book ai didi

multithreading - "benaphores"是否值得在现代操作系统上实现?

转载 作者:行者123 更新时间:2023-12-05 05:29:13 25 4
gpt4 key购买 nike

在我作为 BeOS 程序员的日子里,我阅读了 this article作者:Benoit Schillings,描述了如何创建“benaphore”:一种使用原子变量强制执行关键部分的方法,避免在常见(无争用)情况下获取/释放互斥体的需要。

我觉得这很聪明,而且看起来你可以在任何支持原子递增/递减的平台上做同样的事情。

另一方面,这看起来像是可以很容易地包含在标准互斥锁实现本身中的东西……在这种情况下,在我的程序中实现这个逻辑将是多余的,并且不会提供任何好处。

有谁知道现代锁定 API(例如 pthread_mutex_lock()/pthread_mutex_unlock())是否在内部使用这个技巧?如果不是,为什么不呢?

最佳答案

您的文章描述的内容在当今很普遍。通常它被称为“Critical Section”,它由一个互锁变量、一堆标志和一个内部同步对象(Mutex,如果我没记错的话)组成。一般在争用很少的场景下,Critical Section完全在用户态执行,不涉及内核同步对象。这保证了快速执行。当竞争高时,内核对象用于等待,释放时间片以加快周转时间。

一般来说,在当今时代实现同步原语意义不大。操作系统带有各种各样的此类对象,并且它们在比单个程序员想象的更广泛的场景中进行了优化和测试。发明、实现和测试良好的同步机制确实需要数年时间。这并不是说尝试没有值(value):)

关于multithreading - "benaphores"是否值得在现代操作系统上实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1635416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com