Как синхронизировать QThread?, Qt 3.3.8, QThread без слотов и сигналов |
Здравствуйте, гость ( Вход | Регистрация )
Как синхронизировать QThread?, Qt 3.3.8, QThread без слотов и сигналов |
DIMEDROLL |
7.2.2010, 21:01
Сообщение
#1
|
Участник Группа: Участник Сообщений: 165 Регистрация: 28.9.2008 Из: Киев Пользователь №: 304 Спасибо сказали: 23 раз(а) Репутация: 0 |
в общем каша такова:
Пишу на Qt 3.3.8. Есть класс Считалка, который расчитывает положение 3D точек(вертексов), например:
CalculatePositions() расчитывает новые положения точек и сохраняет их в массив vertexes_. Есть класс-виджет MyGLWidget для рендеринга этих точек который унаследован от QGLWidget. И есть главное окно с кнопками, старт и стоп для начала расчетов-рендера и для остановки. Задача: по кнопке Старт, начать бесконечный цикл CalculatePositions(); GetVertexes(); RenderVertexes(); при этом кнопка Стоп должна оставаться активной, тоесть что бы пользователь мог ее нажать и бесконечный цикл остановился. Как это правильно сделать? если я в теле MyGLWidget::onStartButtonPressed() это сделаю, то все зависнет и будет бесконечно рендерится. |
|
|
Rocky |
7.2.2010, 21:06
Сообщение
#2
|
Старейший участник Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: 7 |
А QApplication::processEvents() тут не поможет?
|
|
|
DIMEDROLL |
7.2.2010, 21:15
Сообщение
#3
|
Участник Группа: Участник Сообщений: 165 Регистрация: 28.9.2008 Из: Киев Пользователь №: 304 Спасибо сказали: 23 раз(а) Репутация: 0 |
когда то использовал эту функцию в другом приложении, что то было ужасно некрасиво и она выбросилась из моска как "неправильная", но тут сейчас проверю, спасибо
upd: проверил, в принципе работает, но не так как хотелось бы главное окно сильно тормозит, причиной этому я подозреваю CalculatePositions(), эта функция может занимать 0,5 - 5 секунд и в это время события соответственно не будут обрабатываться Поэтому вопрос остается актуальным. Я думал сделать так: Создать поток class MyThread : public QThread,
но что то мьютексы не лочатся правильно, либо я неправильно их использую Сообщение отредактировал DIMEDROLL - 7.2.2010, 21:38 |
|
|
DIMEDROLL |
8.2.2010, 23:55
Сообщение
#4
|
Участник Группа: Участник Сообщений: 165 Регистрация: 28.9.2008 Из: Киев Пользователь №: 304 Спасибо сказали: 23 раз(а) Репутация: 0 |
в общем как это обычно и бывает, полезно на форуме выкладывать свои мысли - тогда проблему видишь более ясно и решение приходит в голову
в предыдущем посте я, в принципе, дал ответ на свой вопрос, просто реализация у меня была несколько не такая как я описал... сделал так как описал и заработало потом подвешал Таймер и все работает идеально и быстро |
|
|
Текстовая версия | Сейчас: 26.11.2024, 19:59 |