如何在Linux中配置pthread互斥锁?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (57)

我想知道如何配置一个pthread互斥锁来查看我的代码中是否有锁定争用点。我知道如何做一个更一般的代码分析。

我知道这对自旋锁来说很容易,因为它只是一个计数器,但是通过阅读相关的pthread手册页和头文件我没有发现任何类似的东西,是否有可用于pthread互斥量的东西?

提问于
用户回答回答于

你可以指定在报告错误之前应等待锁定多长时间的限制。

如:

mutrace: 10 most contended mutexes:

 Mutex #   Locked  Changed    Cont. tot.Time[ms] avg.Time[ms] max.Time[ms]       Type
      35   368268      407      275      120,822        0,000        0,894     normal
       5   234645      100       21       86,855        0,000        0,494     normal
      26   177324       47        4       98,610        0,001        0,150     normal
      19    55758       53        2       23,931        0,000        0,092     normal
      53      106       73        1        0,769        0,007        0,160     normal
      25    15156       70        1        6,633        0,000        0,019     normal
       4      973       10        1        4,376        0,004        0,174     normal
      75       68       62        0        0,038        0,001        0,004     normal
       9     1663       52        0        1,068        0,001        0,412     normal
       3   136553       41        0       61,408        0,000        0,281     normal
     ...      ...      ...      ...          ...          ...          ...        ...

mutrace: Total runtime 9678,142 ms.
用户回答回答于

如果是linux,我已经使用LTT进行这种分析。它可以用于两种模式:

  1. 性能分析 - 例如,将系统配置为标准使用N秒,然后分析数据
  2. 例外分析 - 例如在“飞行记录器”模式下全天候运行(记录最后N秒的活动),并在某些特殊情况下触发飞行记录器的停止。第二天早上进来分析数据。

扫码关注云+社区

领取腾讯云代金券