mirror of
https://github.com/pocoproject/poco.git
synced 2025-02-20 14:24:35 +01:00
trunk/branch integration: ScoppedRWLock
This commit is contained in:
parent
d32aea5dbe
commit
190dfbfde4
@ -45,7 +45,13 @@
|
||||
|
||||
|
||||
#if defined(POCO_OS_FAMILY_WINDOWS)
|
||||
#if defined(_WIN32_WCE)
|
||||
#include "Poco/RWLock_WINCE.h"
|
||||
#else
|
||||
#include "Poco/RWLock_WIN32.h"
|
||||
#endif
|
||||
#elif defined(POCO_VXWORKS)
|
||||
#include "Poco/RWLock_VX.h"
|
||||
#else
|
||||
#include "Poco/RWLock_POSIX.h"
|
||||
#endif
|
||||
@ -55,6 +61,8 @@ namespace Poco {
|
||||
|
||||
|
||||
class ScopedRWLock;
|
||||
class ScopedReadRWLock;
|
||||
class ScopedWriteRWLock;
|
||||
|
||||
|
||||
class Foundation_API RWLock: private RWLockImpl
|
||||
@ -63,6 +71,8 @@ class Foundation_API RWLock: private RWLockImpl
|
||||
{
|
||||
public:
|
||||
typedef ScopedRWLock ScopedLock;
|
||||
typedef ScopedReadRWLock ScopedReadLock;
|
||||
typedef ScopedWriteRWLock ScopedWriteLock;
|
||||
|
||||
RWLock();
|
||||
/// Creates the Reader/Writer lock.
|
||||
@ -114,6 +124,24 @@ private:
|
||||
};
|
||||
|
||||
|
||||
class Foundation_API ScopedReadRWLock : public ScopedRWLock
|
||||
/// A variant of ScopedLock for reader locks.
|
||||
{
|
||||
public:
|
||||
ScopedReadRWLock(RWLock& rwl);
|
||||
~ScopedReadRWLock();
|
||||
};
|
||||
|
||||
|
||||
class Foundation_API ScopedWriteRWLock : public ScopedRWLock
|
||||
/// A variant of ScopedLock for writer locks.
|
||||
{
|
||||
public:
|
||||
ScopedWriteRWLock(RWLock& rwl);
|
||||
~ScopedWriteRWLock();
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// inlines
|
||||
//
|
||||
@ -162,6 +190,26 @@ inline ScopedRWLock::~ScopedRWLock()
|
||||
}
|
||||
|
||||
|
||||
inline ScopedReadRWLock::ScopedReadRWLock(RWLock& rwl): ScopedRWLock(rwl, false)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
inline ScopedReadRWLock::~ScopedReadRWLock()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
inline ScopedWriteRWLock::ScopedWriteRWLock(RWLock& rwl): ScopedRWLock(rwl, true)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
inline ScopedWriteRWLock::~ScopedWriteRWLock()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
} // namespace Poco
|
||||
|
||||
|
||||
|
@ -62,6 +62,7 @@ protected:
|
||||
private:
|
||||
void addWriter();
|
||||
void removeWriter();
|
||||
DWORD tryReadLockOnce();
|
||||
|
||||
HANDLE _mutex;
|
||||
HANDLE _readEvent;
|
||||
|
Loading…
x
Reference in New Issue
Block a user