0

有许多库和 API(例如Qt)似乎被有意设计为非线程安全的。这种设计的动机是什么?

4

2 回答 2

6

这更容易。在不丢失的情况下使非平凡的库线程安全真的很困难

  • 简单
  • 可扩展性
  • 速度
  • 稳定
  • 理智

由于许多开发人员非常看重这些东西,他们通常决定不关心多线程。

对于 GUI 库来说,健全性似乎是一个主要问题,因为当您不为 GUI 代码坚持使用单个线程时,您会遇到非常复杂的情况。

于 2012-07-31T07:15:28.247 回答
1

许多用于确保线程安全的技术都会导致性能损失——如果库的可能用例不需要线程安全,那么省略它可能是一个合理的设计选择。

使库非线程安全并不排除它在多线程应用程序中的使用,它只是意味着库的用户必须自己实现线程安全(通常通过在线程安全包装器中包装对库的调用)。通过编写一个没有内置线程安全的库,作者允许不强迫不需要线程安全的用户遭受相关的性能损失。

于 2012-07-31T07:19:48.597 回答