设计库是非线程安全的动机

时间:2012-07-31 07:08:20

标签: multithreading thread-safety

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

2 个答案:

答案 0 :(得分:6)

这更容易。如果不放弃

,很难使非平凡的库线程安全
  • 简单
  • 可扩展性
  • 速度
  • 稳定性
  • 神智

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

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

答案 1 :(得分:1)

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

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