升压:如何监控僵局互斥和力释放的状态[复制](boost: how to monitor statu

2019-10-17 09:10发布

可能重复:
例如,对于升压shared_mutex(多次读取/写入一个)?

我试图使用shared_lockunique_lock库从推动落实资源的基本读写锁。 然而,一些访问资源的线程必须简单地崩溃的可能性。 我想创建另一个进程,给定一个互斥体,监控互斥和跟踪哪些进程锁定资源多久每个进程有锁。 这个过程也将强制进程释放锁,如果它有超过给定的时间周期更锁。

对如何处理这个问题的任何建议,非常感谢!

Answer 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()显式地突出锁保持的范围)。



文章来源: boost: how to monitor status of mutex and force release on deadlock [duplicate]