Atm*_*ons 7 c++ scoped-lock boost-mutex
我缩短的简化课程如下:
class A
{
public:
// ...
methodA();
methodB();
protected:
mutable boost::mutex m_mutex;
sometype* m_myVar;
}
A::methodA( int someParam )
{
boost::mutex::scoped_lock myLock(m_mutex);
m_myVar->doSomethingElse();
}
A::methodB( int someParam )
{
boost::mutex::scoped_lock myLock(m_mutex);
m_myVar->doSomething();
this->methodA(someParam);
}
Run Code Online (Sandbox Code Playgroud)
我想同步访问m_myVar.在调用时A::methodB(),线程会使用相同的互斥锁两次进入锁定状态,并且明显会阻塞第一行A::methodA()
有没有办法在再次传递时scoped_lock不阻止同一个线程?
当然,我只是可以打电话m_mutex.unlock().但这也会释放其他线程等待锁定 - 这绝对不是我想要的.
任何的想法?
最好的问候托比亚斯
| 归档时间: |
|
| 查看次数: |
1826 次 |
| 最近记录: |