gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:04:42 27 4
gpt4 key购买 nike

在 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com