aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/poco/Foundation/src/RWLock_WINCE.cpp
diff options
context:
space:
mode:
authororivej <orivej@yandex-team.ru>2022-02-10 16:44:49 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:44:49 +0300
commit718c552901d703c502ccbefdfc3c9028d608b947 (patch)
tree46534a98bbefcd7b1f3faa5b52c138ab27db75b7 /contrib/libs/poco/Foundation/src/RWLock_WINCE.cpp
parente9656aae26e0358d5378e5b63dcac5c8dbe0e4d0 (diff)
downloadydb-718c552901d703c502ccbefdfc3c9028d608b947.tar.gz
Restoring authorship annotation for <orivej@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'contrib/libs/poco/Foundation/src/RWLock_WINCE.cpp')
-rw-r--r--contrib/libs/poco/Foundation/src/RWLock_WINCE.cpp342
1 files changed, 171 insertions, 171 deletions
diff --git a/contrib/libs/poco/Foundation/src/RWLock_WINCE.cpp b/contrib/libs/poco/Foundation/src/RWLock_WINCE.cpp
index f383a9da5d..9e1e150cf6 100644
--- a/contrib/libs/poco/Foundation/src/RWLock_WINCE.cpp
+++ b/contrib/libs/poco/Foundation/src/RWLock_WINCE.cpp
@@ -1,174 +1,174 @@
-//
-// RWLock_WINCE.cpp
-//
-// Library: Foundation
-// Package: Threading
-// Module: RWLock
-//
-// Copyright (c) 2009-2010, Applied Informatics Software Engineering GmbH.
-// and Contributors.
-//
-// SPDX-License-Identifier: BSL-1.0
-//
-
-
-#include "Poco/RWLock_WINCE.h"
-#include "Poco/Thread.h"
-
-
-namespace Poco {
-
-
-RWLockImpl::RWLockImpl():
- _readerCount(0),
- _readerWaiting(0),
- _writerCount(0),
- _writerWaiting(0),
- _writeLock(false)
-
-{
- InitializeCriticalSection(&_cs);
- _readerGreen = CreateEventW(NULL, FALSE, TRUE, NULL);
- if (!_readerGreen) throw SystemException("Cannot create RWLock");
- _writerGreen = CreateEventW(NULL, FALSE, TRUE, NULL);
- if (!_writerGreen)
- {
- CloseHandle(_readerGreen);
- throw SystemException("Cannot create RWLock");
- }
-}
-
-
-RWLockImpl::~RWLockImpl()
-{
- CloseHandle(_readerGreen);
- CloseHandle(_writerGreen);
- DeleteCriticalSection(&_cs);
-}
-
-
-void RWLockImpl::readLockImpl()
-{
- tryReadLockImpl(INFINITE);
-}
-
-
-bool RWLockImpl::tryReadLockImpl(DWORD timeout)
-{
- bool wait = false;
- do
- {
- EnterCriticalSection(&_cs);
- if (!_writerCount && !_writerWaiting)
- {
- if (wait)
- {
- _readerWaiting--;
- wait = false;
- }
- _readerCount++;
- }
- else
- {
- if (!wait)
- {
- _readerWaiting++;
- wait = true;
- }
- ResetEvent(_readerGreen);
- }
+//
+// RWLock_WINCE.cpp
+//
+// Library: Foundation
+// Package: Threading
+// Module: RWLock
+//
+// Copyright (c) 2009-2010, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier: BSL-1.0
+//
+
+
+#include "Poco/RWLock_WINCE.h"
+#include "Poco/Thread.h"
+
+
+namespace Poco {
+
+
+RWLockImpl::RWLockImpl():
+ _readerCount(0),
+ _readerWaiting(0),
+ _writerCount(0),
+ _writerWaiting(0),
+ _writeLock(false)
+
+{
+ InitializeCriticalSection(&_cs);
+ _readerGreen = CreateEventW(NULL, FALSE, TRUE, NULL);
+ if (!_readerGreen) throw SystemException("Cannot create RWLock");
+ _writerGreen = CreateEventW(NULL, FALSE, TRUE, NULL);
+ if (!_writerGreen)
+ {
+ CloseHandle(_readerGreen);
+ throw SystemException("Cannot create RWLock");
+ }
+}
+
+
+RWLockImpl::~RWLockImpl()
+{
+ CloseHandle(_readerGreen);
+ CloseHandle(_writerGreen);
+ DeleteCriticalSection(&_cs);
+}
+
+
+void RWLockImpl::readLockImpl()
+{
+ tryReadLockImpl(INFINITE);
+}
+
+
+bool RWLockImpl::tryReadLockImpl(DWORD timeout)
+{
+ bool wait = false;
+ do
+ {
+ EnterCriticalSection(&_cs);
+ if (!_writerCount && !_writerWaiting)
+ {
+ if (wait)
+ {
+ _readerWaiting--;
+ wait = false;
+ }
+ _readerCount++;
+ }
+ else
+ {
+ if (!wait)
+ {
+ _readerWaiting++;
+ wait = true;
+ }
+ ResetEvent(_readerGreen);
+ }
+ LeaveCriticalSection(&_cs);
+ if (wait)
+ {
+ if (WaitForSingleObject(_readerGreen, timeout) != WAIT_OBJECT_0)
+ {
+ EnterCriticalSection(&_cs);
+ _readerWaiting--;
+ SetEvent(_readerGreen);
+ SetEvent(_writerGreen);
+ LeaveCriticalSection(&_cs);
+ return false;
+ }
+ }
+ }
+ while (wait);
+
+ return true;
+}
+
+
+void RWLockImpl::writeLockImpl()
+{
+ tryWriteLockImpl(INFINITE);
+}
+
+
+bool RWLockImpl::tryWriteLockImpl(DWORD timeout)
+{
+ bool wait = false;
+
+ do
+ {
+ EnterCriticalSection(&_cs);
+ if (!_readerCount && !_writerCount)
+ {
+ if (wait)
+ {
+ _writerWaiting--;
+ wait = false;
+ }
+ _writerCount++;
+ }
+ else
+ {
+ if (!wait)
+ {
+ _writerWaiting++;
+ wait = true;
+ }
+ ResetEvent(_writerGreen);
+ }
LeaveCriticalSection(&_cs);
- if (wait)
- {
- if (WaitForSingleObject(_readerGreen, timeout) != WAIT_OBJECT_0)
- {
- EnterCriticalSection(&_cs);
- _readerWaiting--;
+ if (wait)
+ {
+ if (WaitForSingleObject(_writerGreen, timeout) != WAIT_OBJECT_0)
+ {
+ EnterCriticalSection(&_cs);
+ _writerWaiting--;
SetEvent(_readerGreen);
- SetEvent(_writerGreen);
- LeaveCriticalSection(&_cs);
- return false;
- }
- }
+ SetEvent(_writerGreen);
+ LeaveCriticalSection(&_cs);
+ return false;
+ }
+ }
}
- while (wait);
-
- return true;
-}
-
-
-void RWLockImpl::writeLockImpl()
-{
- tryWriteLockImpl(INFINITE);
-}
-
-
-bool RWLockImpl::tryWriteLockImpl(DWORD timeout)
-{
- bool wait = false;
-
- do
- {
- EnterCriticalSection(&_cs);
- if (!_readerCount && !_writerCount)
- {
- if (wait)
- {
- _writerWaiting--;
- wait = false;
- }
- _writerCount++;
- }
- else
- {
- if (!wait)
- {
- _writerWaiting++;
- wait = true;
- }
- ResetEvent(_writerGreen);
- }
- LeaveCriticalSection(&_cs);
- if (wait)
- {
- if (WaitForSingleObject(_writerGreen, timeout) != WAIT_OBJECT_0)
- {
- EnterCriticalSection(&_cs);
- _writerWaiting--;
- SetEvent(_readerGreen);
- SetEvent(_writerGreen);
- LeaveCriticalSection(&_cs);
- return false;
- }
- }
- }
- while (wait);
-
- _writeLock = true;
- return true;
-}
-
-
-void RWLockImpl::unlockImpl()
-{
- EnterCriticalSection(&_cs);
-
- if (_writeLock)
- {
- _writeLock = false;
- _writerCount--;
- }
- else
- {
- _readerCount--;
- }
- if (_writerWaiting)
- SetEvent(_writerGreen);
- else if (_readerWaiting)
- SetEvent(_readerGreen);
-
- LeaveCriticalSection(&_cs);
-}
-
-
-} // namespace Poco
+ while (wait);
+
+ _writeLock = true;
+ return true;
+}
+
+
+void RWLockImpl::unlockImpl()
+{
+ EnterCriticalSection(&_cs);
+
+ if (_writeLock)
+ {
+ _writeLock = false;
+ _writerCount--;
+ }
+ else
+ {
+ _readerCount--;
+ }
+ if (_writerWaiting)
+ SetEvent(_writerGreen);
+ else if (_readerWaiting)
+ SetEvent(_readerGreen);
+
+ LeaveCriticalSection(&_cs);
+}
+
+
+} // namespace Poco