Приветствую всех,
В моем приложении QT я использую OpenMP для распараллеливания циклов. В цикле я хочу обновить значения индикатора выполнения текущего QMainWindow. Следующий фрагмент кода показывает, как я пытаюсь это сделать:
#ifdef OPENMP_ENABLE
#pragma omp parallel for
#endif
for (int i = 0; i < endIndex; i++) {
getMainWindow()->setProgress(currProg); //change the value of QProgressBar
QApplication::processEvents(); //update events,widgets
//Do some processing
}
Здесь метод getMainWindow()->SetProgress() просто изменяет значения QProgressbar, прикрепленного к строке состояния QMainWindow.
При компиляции и запуске приложения с включенным OpenMP выдает следующую ошибку:
Ошибка ASSERT в QCoreApplication::sendEvent: "Невозможно отправить события объектам, принадлежащим другому потоку. Текущий поток 161975a0. Получатель "MainWindowClass" (типа "MainWindow") был создан в потоке 13d78f8", файл kernel\qcoreapplication.cpp, строка 348
Любые советы, как вызвать QApplication::processEvents() с OpenMP?
Заранее спасибо.