C++提升关于循环的问题。提升两个线程
所以我一直在寻找尽可能多的信息,仍然没有看到我想要做的或者它是如何工作的原理的任何例子。
我一直在闲暇时间工作几年,用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。
究竟需要什么才能做到这一点,我可以运行我的线程理论上是无限的线程?另外,我需要关注内存泄漏的任何潜在问题都非常棒。
似乎'runGraphics','runSound','runInput'等。应同时运行,但你正在等待各自与'。加入()'开始下一个之前完成。只有在启动所有线程后,才可能需要调用'.join()'。 – 2013-02-16 23:08:13