Мне необходимо создать приложение, в котором происходит перемножение двух квадратных матриц. При этом пользователю предоставляется сделать выбор количества потоков, в которых будет происходить это самое умножение (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 потоков, то закроется лишь один.
Как мне закрыть все потоки после того, как они закончили свою работу?
Как меняется крипторынок и к чему готовиться владельцам криптообменников
Вывод из текстового файла слов в которых символ m повторяется ровно 3 раза c++ добавить к коду ниже
Как при нажатии кнопки (WinForApp) в cmd выполнялась команда с моими параметрами?