我过去常常看到“无锁数据结构”这个术语,并认为“那一定很复杂”。然而,我一直在读"C++ Concurrency in Action“,它似乎编写了一个无锁的数据结构,您所要做的就是停止使用互斥/锁,并将其替换为原子代码(以及可能的内存排序障碍)。编写无锁的数据结构仅仅是用原子操作替换锁的一种情况吗?
我正在尝试使一个C++ API (用于)线程安全,这样就可以从不同的线程调用它的函数,而不会破坏内部数据结构。在我目前的方法中,我使用p线程互斥保护成员变量的所有访问。这意味着一个简单的getter函数现在锁定和解锁一个互斥锁,我对此的开销感到担忧,特别是因为API将主要用于单线程应用程序,在这些应用程序中,任何互斥锁似乎都是纯开销。所以,我想问:
,你对使用锁的单线程应用程序的性能有什么经验吗?,与eg相比,这些<