| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- //
- // RWLock_VX.cpp
- //
- // $Id: //poco/1.4/Foundation/src/RWLock_VX.cpp#2 $
- //
- // Library: Foundation
- // Package: Threading
- // Module: RWLock
- //
- // Copyright (c) 2004-2011, Applied Informatics Software Engineering GmbH.
- // and Contributors.
- //
- // SPDX-License-Identifier: BSL-1.0
- //
- #include "Poco/RWLock_VX.h"
- #include <cstring>
- namespace Poco {
- RWLockImpl::RWLockImpl()
- {
- #if defined(POCO_VXWORKS)
- // This workaround is for VxWorks 5.x where
- // pthread_mutex_init() won't properly initialize the mutex
- // resulting in a subsequent freeze in pthread_mutex_destroy()
- // if the mutex has never been used.
- std::memset(&_mutex, 0, sizeof(_mutex));
- #endif
- pthread_mutexattr_t attr;
- pthread_mutexattr_init(&attr);
- if (pthread_mutex_init(&_mutex, &attr))
- {
- pthread_mutexattr_destroy(&attr);
- throw SystemException("cannot create mutex");
- }
- pthread_mutexattr_destroy(&attr);
- }
- RWLockImpl::~RWLockImpl()
- {
- pthread_mutex_destroy(&_mutex);
- }
- } // namespace Poco
|