可能重复:
例如,对于升压shared_mutex(多次读取/写入一个)?
我试图使用shared_lock
和unique_lock
库从推动落实资源的基本读写锁。 然而,一些访问资源的线程必须简单地崩溃的可能性。 我想创建另一个进程,给定一个互斥体,监控互斥和跟踪哪些进程锁定资源多久每个进程有锁。 这个过程也将强制进程释放锁,如果它有超过给定的时间周期更锁。
对如何处理这个问题的任何建议,非常感谢!
可能重复:
例如,对于升压shared_mutex(多次读取/写入一个)?
我试图使用shared_lock
和unique_lock
库从推动落实资源的基本读写锁。 然而,一些访问资源的线程必须简单地崩溃的可能性。 我想创建另一个进程,给定一个互斥体,监控互斥和跟踪哪些进程锁定资源多久每个进程有锁。 这个过程也将强制进程释放锁,如果它有超过给定的时间周期更锁。
对如何处理这个问题的任何建议,非常感谢!
如果强制进程持有锁释放,那么你已经打败了锁的目的。 试想互斥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()
显式地突出锁保持的范围)。