在C++中经过30ms的时间之后退出循环的最佳方法是什么

Nei*_*l G 1 c++ qt timer clock

在C++中尽可能接近30ms退出循环的最佳方法是什么.轮询提升:microsec_clock?轮询QTime?别的什么?

就像是:

A = now;
for (blah; blah; blah) {
    Blah();
    if (now - A > 30000)
         break;
}
Run Code Online (Sandbox Code Playgroud)

它应该适用于Linux,OS X和Windows.

循环中的计算用于更新模拟.每隔30ms,我想更新视口.

Jul*_*ano 11

循环中的计算用于更新模拟.每隔30ms,我想更新视口.

你考虑过使用线程吗?您描述的内容似乎是您应该使用线程而不是计时器的完美示例.

主进程线程不断处理UI,并将QTimer设置为30ms以进行更新.它锁定QMutex以访问数据,执行更新并释放互斥锁.

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

随着多核处理器的增长趋势,您应该越来越多地考虑使用线程而不是使用定时器.您的应用程序自动受益于新处理器的增加功率(多核).