#include "GLTB/rwlock.h" namespace gltb { RWLock::RWLock() { #ifdef WIN32 InitializeSRWLock(&rwLock); #else pthread_rwlock_init(&rwLock,NULL); #endif } RWLock::~RWLock() { #ifndef WIN32 pthread_rwlock_destroy(&rwLock); #endif } void RWLock::readLock() { #ifdef WIN32 AcquireSRWLockShared(&rwLock); #else pthread_rwlock_rdlock(&rwLock); #endif } void RWLock::readUnlock() { #ifdef WIN32 ReleaseSRWLockShared(&rwLock); #else pthread_rwlock_unlock(&rwLock); #endif } void RWLock::writeLock() { #ifdef WIN32 AcquireSRWLockExclusive(&rwLock); #else pthread_rwlock_wrlock(&rwLock); #endif } void RWLock::writeUnlock() { #ifdef WIN32 ReleaseSRWLockExclusive(&rwLock); #else pthread_rwlock_unlock(&rwLock); #endif } RefPtr RWLock::createRWLock() { return new RWLock(); } }