Мне необходимо создать приложение, в котором происходит перемножение двух квадратных матриц. При этом пользователю предоставляется сделать выбор количества потоков, в которых будет происходить это самое умножение (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 потоков, то закроется лишь один.
Как мне закрыть все потоки после того, как они закончили свою работу?
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости