问题背景
有问题的代码与 C++ 实现有关。我们有代码库,对于某些关键实现,我们确实使用asm volatile ("mfence":"memory")
.
我对记忆障碍的理解是——
- 它用于确保指令集的完整/有序执行。
- 它将有助于避免经典的线程同步问题 - Wiki 链接。
问题
- 如果我们使用内存围栏来避免线程同步问题,是否
pthread_mutext
比内存屏障更快?我已阅读表明pthread mutex 使用内存同步的内容。
PS:
在我们的代码中,在
asm volatile ("mfence":"memory")
10-15 行 c++ 代码(成员函数)之后使用了。所以我的疑问是 - 可能是内存同步的多文本实现在用户实现的代码中提供了比 MB 更好的性能(wrt 范围为 MB)。我们正在使用具有四核处理器的 SUSE Linux 10、2.6.16.46、smp#1、x64_86。