mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2025-01-19 20:17:15 +01:00
49 lines
922 B
C++
49 lines
922 B
C++
|
//
|
||
|
// RWLock_VX.cpp
|
||
|
//
|
||
|
// 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
|