Мне необходимо создать приложение, в котором происходит перемножение двух квадратных матриц. При этом пользователю предоставляется сделать выбор количества потоков, в которых будет происходить это самое умножение (maxThreadCount = matrixSize).
В связи с этим приложение имеет 2 класса:
my_thread : public QObject - здесь реализована функция перемножения
MainWindow - GUI
Запуск потоков происходит так:
for (qint32 i=0; i < threads_count; ++i)
{
myClassArray[i].moveToThread(&thrArray[i]);
thrArray[i].start();
QObject::connect(&thrArray[i], SIGNAL(started()), &myClassArray[i], SLOT(calculatingFirstAndLastIndeces()));
}
Где, после перемножения в классе my_thread, посылается сигнал об окончании перемножения:
emit end_work(numberThisThread);
Но обработка:
void MainWindow::rcvEndWork(qint32 threadNumber)
{
thrArray[threadNumber].quit();
qDebug() << "Threads №" << threadNumber << " were closed";
}
этого сигнала в MainWindow происходит лишь один раз, т.е. если сигнал будет послан из 1600 потоков, то закроется лишь один.
Как мне закрыть все потоки после того, как они закончили свою работу?
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники