【发布时间】:2012-06-06 20:00:57
【问题描述】:
我想知道如何分析 pthread 互斥锁以查看我的代码中是否存在任何锁定争用点。 (谁喜欢有争议的代码,对吧?:) 我知道如何对代码进行更一般的分析,正如我提到的 here。但我想知道是否有任何工具或选项可用于分析互斥锁,这些工具或选项可以提供有关互斥锁争用的指标/统计信息,以查看我是否有任何问题区域。
这里有一些背景和背景:
最近我使用 Cavium Octeon CPU 从事嵌入式 C++ 项目。 Octeon SDK 使用自旋锁实现互斥锁样式同步。通过阅读 Octeon 文档,我发现了一种分析自旋锁的方法,以便能够查看每个自旋锁在等待锁可用时必须旋转多少次。要使用它,我必须进行条件编译,然后每次自旋锁旋转时都会增加一个计数器,然后我可以查询微调器等待值。因此,我所做的是封装自旋锁,并添加了为系统中使用的所有自旋锁转储自旋锁旋转器等待值的能力。实际值并没有多大意义,但是与其他的相比,有一些具有非常高的值,我专注于减少对它们的争用。
我知道这对于自旋锁来说可能很容易,因为它只是每次自旋的一个计数器,但是通过阅读相关的 pthread 手册页和头文件我还没有找到类似的东西,有没有可用于 pthread 互斥锁的东西?
我真的很想避免做一些不合时宜的事情,比如在每次锁定之前和之后花时间。
PS:mutex 的复数形式是什么?互斥体,互斥体,互斥体,互斥体???互斥体对我来说从来都不是正确的。
【问题讨论】:
-
我至少可以向你保证,互斥体的复数形式是互斥体。
-
我开玩笑地希望使用互斥体,作为对互斥的半开玩笑的参考(以及对我家中一个常见的发音错误的单词的玩笑)。但正如 Mark B 所说,我听说互斥锁是最常见的形式。
-
如果是mutox而不是mutex,你可以说mutoxen。
-
@AdamRosenfield,不错,这是与互斥锁的关系:)
标签: c++ c performance pthreads mutex