【问题标题】:Checking Mutex release检查互斥锁释放
【发布时间】:2010-12-25 09:59:05
【问题描述】:

我有一个用 C++ 编写的多线程应用程序。我正在使用互斥锁进行文件写入。我怀疑在程序执行期间的某个地方,互斥锁没有被释放。
所以我想知道是否有办法以编程或其他方式检查文件上的互斥锁和释放。
我在 SuseLinux 上运行代码,顺便说一句。
谢谢,

【问题讨论】:

  • 问题其实是别的,看起来很傻。我没有在某些构造函数中初始化 bool 变量,假设默认情况下它将被初始化为 false。现在,如果您想知道问题是由于互斥锁还是错误初始化引起的,我怎么会感到困惑;好吧,如果你看过代码,我想你会明白的。无论如何,谢谢你的答案。他们很有帮助。

标签: c++ linux multithreading file mutex


【解决方案1】:

欢迎来到调试多线程代码的美妙世界。没有灵丹妙药可以解决您的问题,但至少您应该使用RAII idioms 来管理您的互斥锁。这意味着将互斥锁包装在一个 C++ 类中,该类在创建类的实例时声明互斥锁,并在它(类实例)被销毁时释放它。您还可以有利地记录声明/发布,但请注意,这可能会引入时间错误和伪影。

【讨论】:

  • Boost::Threads 库有一组非常不错的可移植 RAII 互斥锁...有助于避免因延迟锁而导致的死锁。
猜你喜欢
  • 1970-01-01
  • 2011-03-17
  • 2012-02-23
  • 1970-01-01
  • 1970-01-01
  • 2015-03-21
  • 2017-02-23
  • 2013-06-08
  • 2011-05-08
相关资源
最近更新 更多