我需要一些线程安全的STL容器。
基本上,我想每个STL容器对象只需要添加2个方法即可。
.lock()
.unlock()
我可以把它分成几个部分。
.lockForReading()
.unlockForReading()
.lockForWriting()
.unlockForWriting()
这种方式可以允许多个并行读锁,但如果有写锁存在,则同时读写都会被阻塞。
尝试进行写锁定时,需要等待读取锁定信号量降至0。
是否有标准的方法来实现这一点?
我计划的方式是错误的或者短视的吗?
LockObject Lock()
,它将在LockObject
被销毁时自动解锁,并不提供显式的Unlock()
调用。 - Puppy.lock()
方法,因为有些意外情况可能会阻止在块结束时调用.unlock()
方法,但是如果由于栈分配变量的对象销毁而导致调用.unlock()
,则任何调用.lock()
的函数中的早期返回都将保证释放锁。这里提出了一个很好的观点。 - bobobobo