diff options
| author | Liang Qi <liang.qi@qt.io> | 2017-02-17 20:10:34 +0100 |
|---|---|---|
| committer | Liang Qi <liang.qi@qt.io> | 2017-02-17 20:10:34 +0100 |
| commit | bc4cd465dd5df82e13f3c7709166ee11289d219f (patch) | |
| tree | d6323aaed6383e589fbefb6057648c22bb187c76 /src/corelib/thread/qthreadpool.cpp | |
| parent | 43daefb0962794b2df256cae1098e889b9b36f12 (diff) | |
| parent | 07745d7bfbf6c8d83e0243150d8ce934675dea87 (diff) | |
Merge remote-tracking branch 'origin/5.9' into dev
Conflicts:
qmake/Makefile.unix
Change-Id: Ia18e391198222eef34ffa2df6f683e052058d032
Diffstat (limited to 'src/corelib/thread/qthreadpool.cpp')
| -rw-r--r-- | src/corelib/thread/qthreadpool.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/corelib/thread/qthreadpool.cpp b/src/corelib/thread/qthreadpool.cpp index 7ce757064f7..2ecf8f729a1 100644 --- a/src/corelib/thread/qthreadpool.cpp +++ b/src/corelib/thread/qthreadpool.cpp @@ -245,7 +245,8 @@ void QThreadPoolPrivate::startThread(QRunnable *runnable) { QScopedPointer <QThreadPoolThread> thread(new QThreadPoolThread(this)); thread->setObjectName(QLatin1String("Thread (pooled)")); - allThreads.insert(thread.data()); + Q_ASSERT(!allThreads.contains(thread.data())); // if this assert hits, we have an ABA problem (deleted threads don't get removed here) + allThreads.append(thread.data()); ++activeThreads; if (runnable->autoDelete()) @@ -265,7 +266,7 @@ void QThreadPoolPrivate::reset() while (!allThreads.empty()) { // move the contents of the set out so that we can iterate without the lock - QSet<QThreadPoolThread *> allThreadsCopy; + QList<QThreadPoolThread *> allThreadsCopy; allThreadsCopy.swap(allThreads); locker.unlock(); |
