| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- //
- // Mutex_WINCE.cpp
- //
- // $Id: //poco/1.4/Foundation/src/Mutex_WINCE.cpp#1 $
- //
- // Library: Foundation
- // Package: Threading
- // Module: Mutex
- //
- // Copyright (c) 2004-2010, Applied Informatics Software Engineering GmbH.
- // and Contributors.
- //
- // SPDX-License-Identifier: BSL-1.0
- //
- #include "Poco/Mutex_WINCE.h"
- namespace Poco {
- MutexImpl::MutexImpl()
- {
- _mutex = CreateMutexW(NULL, FALSE, NULL);
- if (!_mutex) throw SystemException("cannot create mutex");
- }
- MutexImpl::~MutexImpl()
- {
- CloseHandle(_mutex);
- }
- void MutexImpl::lockImpl()
- {
- switch (WaitForSingleObject(_mutex, INFINITE))
- {
- case WAIT_OBJECT_0:
- return;
- default:
- throw SystemException("cannot lock mutex");
- }
- }
- bool MutexImpl::tryLockImpl()
- {
- switch (WaitForSingleObject(_mutex, 0))
- {
- case WAIT_TIMEOUT:
- return false;
- case WAIT_OBJECT_0:
- return true;
- default:
- throw SystemException("cannot lock mutex");
- }
- }
- bool MutexImpl::tryLockImpl(long milliseconds)
- {
- switch (WaitForSingleObject(_mutex, milliseconds + 1))
- {
- case WAIT_TIMEOUT:
- return false;
- case WAIT_OBJECT_0:
- return true;
- default:
- throw SystemException("cannot lock mutex");
- }
- }
- void MutexImpl::unlockImpl()
- {
- ReleaseMutex(_mutex);
- }
- } // namespace Poco
|