c++ - 在 C++ 中经过 30 毫秒后退出循环的最佳方法是什么

标签 c++ qt timer clock

在 C++ 中退出尽可能接近 30 毫秒的循环的最佳方法是什么。轮询提升:microsec_clock ?轮询 QTime?还有别的吗?

类似于:

A = now;
for (blah; blah; blah) {
    Blah();
    if (now - A > 30000)
         break;
}

它应该可以在 Linux、OS X 和 Windows 上运行。

循环中的计算用于更新模拟。每 30 毫秒,我想更新视口(viewport)。

最佳答案

The calculations in the loop are for updating a simulation. Every 30ms, I'd like to update the viewport.

您是否考虑过使用线程?您所描述的似乎是为什么您应该使用线程而不是计时器的完美示例。

主进程线程一直在处理 UI,并将 QTimer 设置为 30 毫秒来更新它。它锁定了一个 QMutex访问数据、执行更新并释放互斥量。

第二个线程(参见 QThread)进行模拟。对于每个循环,它锁定 QMutex,进行计算并在数据处于稳定状态(适合 UI 更新)时释放互斥量。

随着多核处理器的发展趋势,您应该更多地考虑使用线程而不是使用定时器。您的应用程序会自动受益于新处理器的增强功能(多核)。

关于c++ - 在 C++ 中经过 30 毫秒后退出循环的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/946167/

相关文章:

c++ - 在 C++ 中从主机名获取计算机名?

qt - 如何子类化一个小部件以向其添加更多元素?

python - 当程序继续运行时,为特定圈数设置一个 boolean 值

c++ - 在 Qt 中填充表格

qt - 为 Pandaboard 交叉编译 Qt

node.js - 在 MAC 上本地运行定时器触发的 azure 函数(在 docker 中)

java - java中的定时器实现

C++ DLL 不能在不同的机器上运行

c++ - 在循环中组合元组

c++ - 初始化模板类成员的问题