提升:如何监视静脉静置的状态并在僵局上释放力

boost: how to monitor status of mutex and force release on deadlock

本文关键字:状态 僵局 释放 何监视 监视 提升      更新时间:2023-10-16

可能的重复:
boost shared_mutex的示例(多个读取/一个写)?

我正在尝试使用boost的shared_lockunique_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()明确写出以明确突出锁定的范围)。