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