gpt4 book ai didi

c++ - 使用 pthreads (C++) 创建一个独立的绘图线程

转载 作者:太空宇宙 更新时间:2023-11-04 12:25:41 26 4
gpt4 key购买 nike

我正在开发一个看起来像这样的图形应用程序:

while (Simulator.simulating)
{
Simulator.update();
InputManager.processInput();
VideoManager.draw();
}

我每秒执行几次此操作,在绝大多数情况下,我的计算将占用处理时间的 90-99%。我想做的是取出 processInput 和 draw 函数,让每个函数独立运行。

这样,我可以让输入线程始终检查输入(以合理的速率),并让绘制线程尝试以给定的帧速率重绘。

模拟器已经(内部)多线程,并且多个线程写入相同数据没有问题(每个线程处理一个段)。

我的问题是我不确定如何才能正确地做到这一点。我将如何正确初始化我的 pthread_t 和关联的 pthread_attr_t 以便线程运行而不会阻塞我正在做的事情?换句话说,如何创建两个线程,每个线程都运行无限循环?

为了更概括,我正在尝试弄清楚如何做到这一点:

for (int i = 0; i < threads; i++)
pthread_create(&th[i], NULL, func[i], NULL)

for (int i = 0; i < threads; i++)
pthread_join(th[i], NULL);

其中 func[i] 是一些任意函数,它在无限循环中运行,做一些任意的事情。

感谢任何帮助甚至链接,谢谢!

编辑:我应该提到它是一个交互式模拟器,所以我确实需要有两个相互独立运行的无限循环。我好像只能马上跑。

最佳答案

双缓冲是你的 friend 。有 2 个数据缓冲区。一个是绘图缓冲区,一个是计算缓冲区。完成计算后,等待当前绘制完成,然后交换缓冲区。现在它将在您计算下一帧数据时继续绘制新计算的数据。绘图和模拟现在几乎完全分离......

关于c++ - 使用 pthreads (C++) 创建一个独立的绘图线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2673162/

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