diff options
author | Liang Qi <liang.qi@qt.io> | 2016-06-16 12:25:24 +0000 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2016-06-16 12:25:24 +0000 |
commit | 3d8c8daae109fbd6d60e43c3d4457b581e5e62a3 (patch) | |
tree | 84bb5a5f766ce04ff4d243a38ce5e408db5e7782 /src/corelib/thread | |
parent | 874eb8b44b3ca9cfab63372af10886d16dfc327d (diff) | |
parent | c4e472ea1037afde7b99d9132a49eb616cad240e (diff) |
Merge "Merge remote-tracking branch 'origin/5.7.0' into 5.7" into refs/staging/5.7
Diffstat (limited to 'src/corelib/thread')
-rw-r--r-- | src/corelib/thread/qmutexpool.cpp | 11 | ||||
-rw-r--r-- | src/corelib/thread/qmutexpool_p.h | 5 |
2 files changed, 8 insertions, 8 deletions
diff --git a/src/corelib/thread/qmutexpool.cpp b/src/corelib/thread/qmutexpool.cpp index 522fd5eac2..90b6989467 100644 --- a/src/corelib/thread/qmutexpool.cpp +++ b/src/corelib/thread/qmutexpool.cpp @@ -92,10 +92,11 @@ Q_GLOBAL_STATIC_WITH_ARGS(QMutexPool, globalMutexPool, (QMutex::Recursive)) QMutexPool is destructed. */ QMutexPool::QMutexPool(QMutex::RecursionMode recursionMode, int size) - : count(size), - mutexes(new QAtomicPointer<QMutex>[size]()), // (): zero-initialize - recursionMode(recursionMode) + : mutexes(size), recursionMode(recursionMode) { + for (int index = 0; index < mutexes.count(); ++index) { + mutexes[index].store(0); + } } /*! @@ -104,8 +105,8 @@ QMutexPool::QMutexPool(QMutex::RecursionMode recursionMode, int size) */ QMutexPool::~QMutexPool() { - qDeleteAll(mutexes, mutexes + count); - delete[] mutexes; + for (int index = 0; index < mutexes.count(); ++index) + delete mutexes[index].load(); } /*! diff --git a/src/corelib/thread/qmutexpool_p.h b/src/corelib/thread/qmutexpool_p.h index 33e9a52cb7..796e65d960 100644 --- a/src/corelib/thread/qmutexpool_p.h +++ b/src/corelib/thread/qmutexpool_p.h @@ -66,7 +66,7 @@ public: ~QMutexPool(); inline QMutex *get(const void *address) { - int index = uint(quintptr(address)) % count; + int index = uint(quintptr(address)) % mutexes.count(); QMutex *m = mutexes[index].load(); if (m) return m; @@ -78,8 +78,7 @@ public: private: QMutex *createMutex(int index); - int count; - QAtomicPointer<QMutex> *mutexes; + QVarLengthArray<QAtomicPointer<QMutex>, 131> mutexes; QMutex::RecursionMode recursionMode; }; |