可能重复:
Example for boost shared_mutex (multiple reads/one write)?
我正在尝试使用boost中的shared_lock
和unique_lock
库来实现资源上的基本读写器锁定。但是,访问资源的一些线程可能会崩溃。我想创建另一个进程,给定一个互斥锁,监视互斥锁并跟踪锁定资源的进程以及每个进程有多长时间锁定。如果进程锁定超过给定的时间段,该进程还将强制进程释放其锁定。
非常感谢有关如何解决此问题的任何建议!
答案 0 :(得分:1)
如果您强制执行持有锁定的进程,那么您已经失去了锁定的目的。想象一下,互斥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()
明确写出来明确突出锁定保留的范围。)