Расчеты в цикле для
обновление симуляции. Каждые 30 мс я бы
нравится обновлять область просмотра.
Рассматривали ли вы использование потоков? То, что вы описываете, кажется идеальным примером того, почему вы должны использовать потоки вместо таймеров.
Поток основного процесса продолжает заботиться об интерфейсе пользователя, и для его обновления QTimer имеет значение 30 мс. Он блокирует QMutex для доступа к данным, выполняет обновление и освобождает мьютекс.
Второй поток (см. QThread ) выполняет симуляцию. Для каждого цикла он блокирует QMutex, выполняет вычисления и освобождает мьютекс, когда данные находятся в стабильном состоянии (подходит для обновления пользовательского интерфейса).
В связи с растущей тенденцией к многоядерным процессорам вы должны больше думать об использовании потоков, чем об использовании таймеров. Ваши приложения автоматически получают выгоду от увеличения мощности (многоядерности) новых процессоров.