我正在尝试使 C++ API(用于 Linux 和 Solaris)线程安全,以便可以从不同的线程调用它的函数而不会破坏内部数据结构。在我目前的方法中,我使用 pthread 互斥锁来保护对成员变量的所有访问。这意味着一个简单的 getter 函数现在可以锁定和解锁互斥体,我担心这样做的开销,特别是因为该 API 将主要用于单线程应用程序中,任何互斥体锁定似乎都是纯粹的开销。
所以,我想问一下:
- 您对使用锁定与不使用锁定的单线程应用程序的性能有什么经验吗?
- 与例如相比,这些锁定/解锁调用有多昂贵。对 bool 成员变量进行简单的“返回 this->isActive”访问?
- 您知道保护此类变量访问的更好方法吗?