提升:如何监视静脉静置的状态并在僵局上释放力
boost: how to monitor status of mutex and force release on deadlock
可能的重复:
boost shared_mutex的示例(多个读取/一个写)?
我正在尝试使用boost的shared_lock
和unique_lock
库来实现资源上的基本读取器锁定。但是,一些访问资源的线程可能会简单地崩溃。我想创建另一个过程,给定静音,监视互斥X,并跟踪哪些过程锁定了资源以及每个过程具有锁定的时间。该过程还将迫使一个过程释放其锁定,如果其锁定超过给定的时间段内。
关于如何解决此问题的任何建议都非常感谢!
如果强迫将锁定锁定的过程释放,那么您已经击败了锁的目的。想象一下Mutex pSharedMem->m
保护访问一些内存pSharedMem->mystuff
pSharedMem->m.get_lock() ;
sleep( LONG_TIME ) ;
// wake up, not knowing that your "deadlock detector"
// has released your mutex
pSharedMem->mystuff++ ; // oh-oh... access to shared memory
// without the guarding mutex held.
// Who knows what will happen!
pSharedMem->m.release_lock() ; // you may very well trap or hit some
// system specific error because
// the mutex is no longer held.
(用get_lock()
和release_lock()
明确写出以明确突出锁定的范围)。
相关文章:
- Constexpr替代了新的放置方式,可以让内存中的对象保持未初始化状态
- 我不断收到 [错误] ID 返回 1 退出状态错误,但看不到问题所在
- OSX MetalKit CVMetalTextureCacheCreateTextureFromImage失败,状态:
- std::future_error:无关联状态
- 如何避免LED在循环状态变化中闪烁?
- boost 是否有按特殊类型值编码状态"compact optional"?
- 为什么系统函数总是在C++中返回已转移的退出状态?
- C++ 中的编译错误:未定义对"主"的引用 collect2:错误:ld 返回 1 个退出状态
- 当可输入框在窗口中处于活动状态时获得通知的任何方法
- 检查两个节点在子节点上是否具有相同状态的更优雅的方法
- 将有状态的 lambda 传递到 C 样式函数中,而无需上下文参数
- 在 nullptr 上调用无状态类的非静态成员函数是否合法?
- 编译问题:在函数"_start"中:未定义对"主"的引用 collect2:错误:ld 返回 1 个退出状态
- C++部分概念 id:显式模板规范顺序/第一个参数的特殊状态的原因是什么?
- 试图在崇高中奔跑. 错误 已发生: 收集2.exe: 错误: ld 返回 1 退出状态
- 在容器上移动分配:以前包含的对象的状态
- collect2:错误:ld 返回 1 个退出状态未定义的引用
- 具有动态大小的特征矩阵的默认初始状态
- 如何从Clojure调用C++程序,以使程序保持打开状态?
- 提升:如何监视静脉静置的状态并在僵局上释放力