gpt4 book ai didi

c++ - boost 两个线程

转载 作者:行者123 更新时间:2023-11-28 07:45:40 24 4
gpt4 key购买 nike

关于循环的 C++ Boost 问题。

因此,我一直在尽可能多地查看信息,但仍然没有看到我正在尝试做的事情或它的工作原理的任何示例。

几年来,我一直在利用业余时间用 C++ 设计一款游戏。我弄清楚了游戏逻辑的核心引擎以及粗略的输入系统,并使用 OpenGL 和 AL 进行输出。我想做的是弄清楚如何让我的引擎启动,然后在单独的线程中运行我的输入系统、图形引擎和声音系统。并同时运行。同步我的线程是下一步,但我无法让线程一起运行。

boost::thread gTrd(boost::bind(&game::runGraphics, this));
gTrd.join();
boost::thread sTrd(boost::bind(&game::runSound, this));
sTrd.join();
boost::thread iTrd(boost::bind(&game::runInput, this));
iTrd.join();
boost::thread cTrd(boost::bind(&game::runCore, this));
cTrd.join();

这就是我到目前为止所得到的。据我所知,问题是 gTrd 中的图形引擎有一个无限循环,它应该一直持续到程序终止,所以我得到了我的空白屏幕,但它永远不会启动 sTrd。

制作它究竟需要什么才能运行理论上无限线程的线程?另外,我需要注意的内存泄漏方面的任何潜在问题都很棒。

最佳答案

你知道join() 的作用吗?当您调用它时,它会阻塞主线程,直到调用 join 的线程完成。在您的代码中,您启动一​​个线程,调用 join 等待它完成,然后启动另一个线程并重复此过程。调用 detach() 以允许执行继续(并且您不关心线程何时完成执行)或在启动所有线程后调用 join()(取决于根据您的需要)。

注意:只有在您希望等待线程完成执行时才需要调用 join。

关于c++ - boost 两个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14916024/

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