Use ReadWriteLock for the pools container instead of Mutex

This commit is contained in:
Vesa
2014-08-24 14:42:09 +03:00
parent 8fb8c683f9
commit 3a9e9cc075
2 changed files with 5 additions and 4 deletions

View File

@@ -29,6 +29,7 @@
#include <new>
#include <QtCore/QVector>
#include <QtCore/QMutex>
#include <QtCore/QReadWriteLock>
#include <QtCore/QHash>
#include "MemoryHelper.h"
@@ -96,7 +97,7 @@ public:
private:
static MemoryPoolVector s_memoryPools;
static QMutex s_poolMutex;
static QReadWriteLock s_poolMutex;
static PointerInfoMap s_pointerInfo;
static QMutex s_pointerMutex;

View File

@@ -30,7 +30,7 @@
MemoryPoolVector MemoryManager::s_memoryPools;
QMutex MemoryManager::s_poolMutex;
QReadWriteLock MemoryManager::s_poolMutex;
PointerInfoMap MemoryManager::s_pointerInfo;
QMutex MemoryManager::s_pointerMutex;
@@ -56,7 +56,7 @@ void * MemoryManager::alloc( size_t size )
MemoryPoolVector::iterator it = s_memoryPools.begin();
s_poolMutex.lock();
s_poolMutex.lockForRead();
while( it != s_memoryPools.end() && !ptr )
{
ptr = ( *it ).getChunks( requiredChunks );
@@ -129,7 +129,7 @@ int MemoryManager::extend( int chunks )
MemoryPool m ( chunks );
m.m_pool = MemoryHelper::alignedMalloc( chunks * MM_CHUNK_SIZE );
s_poolMutex.lock();
s_poolMutex.lockForWrite();
s_memoryPools.append( m );
int i = s_memoryPools.size() - 1;
s_poolMutex.unlock();