mirror of
https://github.com/pocoproject/poco.git
synced 2025-10-27 02:53:10 +01:00
enh(ScopedLockWithUnlock): make it more alike std::unique_lock (#4652)
This commit is contained in:
@@ -77,12 +77,18 @@ class ScopedLockWithUnlock
|
||||
public:
|
||||
explicit ScopedLockWithUnlock(M& mutex): _pMutex(&mutex)
|
||||
{
|
||||
poco_assert(_pMutex != nullptr);
|
||||
|
||||
_pMutex->lock();
|
||||
_locked = true;
|
||||
}
|
||||
|
||||
ScopedLockWithUnlock(M& mutex, long milliseconds): _pMutex(&mutex)
|
||||
{
|
||||
poco_assert(_pMutex != nullptr);
|
||||
|
||||
_pMutex->lock(milliseconds);
|
||||
_locked = true;
|
||||
}
|
||||
|
||||
~ScopedLockWithUnlock()
|
||||
@@ -97,17 +103,29 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void lock()
|
||||
{
|
||||
poco_assert(_pMutex != nullptr);
|
||||
poco_assert(_locked == false);
|
||||
|
||||
_pMutex->lock();
|
||||
_locked = true;
|
||||
}
|
||||
|
||||
void unlock()
|
||||
{
|
||||
if (_pMutex)
|
||||
if (_locked)
|
||||
{
|
||||
poco_assert(_pMutex != nullptr);
|
||||
|
||||
_pMutex->unlock();
|
||||
_pMutex = 0;
|
||||
_locked = false;
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
M* _pMutex;
|
||||
bool _locked = false;
|
||||
|
||||
ScopedLockWithUnlock();
|
||||
ScopedLockWithUnlock(const ScopedLockWithUnlock&);
|
||||
|
||||
Reference in New Issue
Block a user