QThreadPool: let the started thread have the same name as the pool

If the pool has a name. This should make identifying threads belonging
to different pools easier in process-inspection tools.

Fixes: QTBUG-92004
Change-Id: Id2983978ad544ff79911fffd167225902efeb855
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
This commit is contained in:
Thiago Macieira 2021-04-02 13:48:37 -07:00
parent 33786e7b02
commit 451fb66212

View File

@ -257,9 +257,15 @@ bool QThreadPoolPrivate::tooManyThreadsActive() const
*/
void QThreadPoolPrivate::startThread(QRunnable *runnable)
{
Q_Q(QThreadPool);
Q_ASSERT(runnable != nullptr);
QScopedPointer<QThreadPoolThread> thread(new QThreadPoolThread(this));
thread->setObjectName(QLatin1String("Thread (pooled)"));
QString objectName;
if (QString myName = q->objectName(); !myName.isEmpty())
objectName = myName;
else
objectName = QLatin1String("Thread (pooled)");
thread->setObjectName(objectName);
Q_ASSERT(!allThreads.contains(thread.data())); // if this assert hits, we have an ABA problem (deleted threads don't get removed here)
allThreads.insert(thread.data());
++activeThreads;