gpt4 book ai didi

c++ - 为什么图书馆要在 Windows 上实现自己的基本锁?

转载 作者:可可西里 更新时间:2023-11-01 13:50:22 25 4
gpt4 key购买 nike

Windows 提供了许多对同步线程有用的对象,例如事件(使用 SetEventWaitForSingleObject)、互斥锁和临界区。

我个人一直使用它们,尤其是关键部分,因为我很确定除非已经锁定,否则它们只会产生很少的开销。然而,看看许多库,例如 boost,人们会在 Windows 上使用互锁方法来实现自己的锁会很麻烦。

我能理解为什么人们会编写无锁队列等,因为那是一种特殊情况,但是人们选择实现他们自己版本的基本同步对象有什么理由吗?

最佳答案

图书馆没有实现自己的锁。如果没有操作系统支持,这几乎是不可能做到的。

他们正在做的只是包装操作系统提供的锁定机制。

Boost 这样做有几个原因:

  • 他们能够利用 C++ 功能提供设计更好的锁定 API。 Windows API 仅是 C,而且设计不是很好的 C。
  • 它们能够提供一定程度的便携性。如果您在 Linux 机器或 Mac 上运行您的应用程序,则可以使用相同的 Boost API。 Windows 自己的 API 显然是特定于 Windows 的。
  • Windows 提供的机制有一个明显的缺点:它们要求您包含 windows.h,出于多种原因您可能希望避免使用它,尤其是其极端的宏滥用会污染全局命名空间。

关于c++ - 为什么图书馆要在 Windows 上实现自己的基本锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1256191/

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