C++ pthread_互斥锁是否比用户在代码中设置的内存屏障提供更高的性能
问题背景 < >代码与C++实现有关。我们有代码库,对于某些关键实现,我们使用C++ pthread_互斥锁是否比用户在代码中设置的内存屏障提供更高的性能,c++,performance,pthreads,asmx,mutex,C++,Performance,Pthreads,Asmx,Mutex,问题背景 < >代码与C++实现有关。我们有代码库,对于某些关键实现,我们使用asm volatile(“mfence”:“memory”) 我对记忆障碍的理解是- 它用于确保指令集的完整/有序执行 这将有助于避免古典音乐 问题 如果我们使用内存围栏来避免线程同步问题,那么pthread\u mutext是否比内存屏障快?我读过的内容表明了这一点 附言: > P>在代码中,使用了代码ASM FAST(“MARVELD”:“内存”)在10-15行C++代码(成员函数)之后使用。所以我
asm volatile(“mfence”:“memory”)
我对记忆障碍的理解是-
- 它用于确保指令集的完整/有序执行李>
- 这将有助于避免古典音乐李>
- 如果我们使用内存围栏来避免线程同步问题,那么
是否比内存屏障快?我读过的内容表明了这一点李>pthread\u mutext
附言:
- 我们正在使用SUSELinux10、2.6.16.46、smp#1、x64_86和四核处理器
*可以想象一个互斥系统忽略某些类型的内存,并选择更宽松的锁定实现(例如依赖于正常内存和忽略特殊标记内存的顺序保证)。但是,我认为这样的实现是无效的。如果没有更多的细节,例如“有多少线程试图获取互斥体”、“多久获取一次互斥体”、“互斥体是否在不同的方法之间广泛共享”、“互斥体是在类级别还是在实例级别”,这个问题几乎不可能回答,等等。我想我可能更担心手动内存围栏在同步方面是否做得对。实现同步原语很难做到正确;出于性能原因编写自己的代码可能会在其他方面给您带来麻烦。