// main.cpp
#include <QtCore/QCoreApplication>
#include <qdebug.h>
#include <qthread.h>
#include <qthreadpool.h>
#include "counter.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QThread::currentThread()->setObjectName("Main");
QThreadPool* pool = QThreadPool::globalInstance();
for (int i = 0; i < 100; i++) {
counter* c = new counter;
c->setAutoDelete(true);
pool->start(c);
}
return a.exec();
}
// counter.h
#pragma once
#include <QObject>
#include <qdebug.h>
#include <qrunnable.h>
#include <qrandom.h>
#include <qthread.h>
class counter : public QRunnable
{
public:
void run();
};
// counter.cpp
#include "counter.h"
void counter::run()
{
qInfo() << "Starting: " << QThread::currentThread();
for (int i = 0; i < 20; i++) {
qInfo() << QThread::currentThread() << " = " << i;
auto value = static_cast<unsigned long>(QRandomGenerator::global()->bounded(500));
QThread::currentThread()->msleep(value);
}
qInfo() << "Finished: " << QThread::currentThread();
}

#include <QtCore/QCoreApplication>
#include <qdebug.h>
#include <qthread.h>
#include <qthreadpool.h>
#include "counter.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QThread::currentThread()->setObjectName("Main");
QThreadPool* pool = QThreadPool::globalInstance();
qInfo() << pool->maxThreadCount() << " Threads";
/*
for (int i = 0; i < 100; i++) {
counter* c = new counter;
c->setAutoDelete(true);
pool->start(c);
}
*/
return a.exec();
}
