我试图让一个C++ API(用于Linux和Solaris)具有线程安全性,以便其函数可以从不同的线程中调用而不会破坏内部数据结构。在我的当前方法中,我使用pthread mutexes来保护对成员变量的所有访问。这意味着一个简单的getter函数现在会锁定和解锁互斥锁,并且我担心这会带来一定的开销,特别是当API大多数情况下将被用于单线程应用程序时,任何互斥锁定似乎都是纯粹的开销。
因此,我想问:
- 您是否有使用锁定与不使用锁定的单线程应用程序的性能经验?
- 相对于例如简单的“return this->isActive”访问布尔成员变量,这些锁定/解锁调用有多昂贵?
- 您知道更好的保护这种变量访问的方法吗?