У меня есть класс Worker
, который немедленно перемещается в конструктор в QThread. Затем я распределяю входящий QTcpSocket среди этих работников. Поэтому, когда Worker
не имеет QTcpSocket, будет ли хорошей идеей выйти из QThread и затем перезапустить его, когда появится новый Socket?
В настоящее время мой код выглядит так: -
void Qerver::incomingConnection(qintptr handle)
{
RouterWorker* lessWoker = routeWorkers[0];
for (const auto& i : routeWorkers) {
if (i->getSockets() < lessWoker->getSockets()) {
lessWoker = i;
}
}
if( !lessWoker->getItsThread().isRunning() && !isSingleThreaded)
lessWoker->getItsThread().start();
QMetaObject::invokeMethod(lessWoker, [lessWoker, handle]() {
lessWoker->addSocket(handle);
});
}
RouterWorker::RouterWorker(QObject* parent)
: QObject(nullptr)
, itsThread(parent)
{
if (QThread::idealThreadCount() > 2) {
moveToThread(&itsThread);
// itsThread.start();
}
}