我有IKernelTask及其派生類(爲輸入,聲音製作單獨的內核任務...)另外我有CKernel,它運行不同的內核任務。 CKernel有一個Execute()函數,它運行內核任務列表並運行它們的Update()函數。如何在內核任務之間共享數據? (具有內核/內核任務的遊戲引擎)
我在內核任務之間發送數據時遇到困難,所以我決定嘗試通過內核發送數據,方法是將內核對象的引用發送給Execute(),然後以相同方式發送給內核任務在Update()中。
CKernel的execute()像這樣:
Execute(CKernel &oKernel)
For each kernel task:
{
Update(oKernel);
}
IKernelTask的更新()像這樣:
Update(CKernel &oKernel)
{
// Each kernel task has an overridden Update() function
}
在主營:
while (running)
{
oKernel.Execute(oKernel);
}
這將允許內核任務在內核任務之間轉發數據,方法是讓他們通過Update()函數訪問內核。
但是:
1.這是一個很好的解決方案嗎?如果不是,那麼傳統的共享數據的方式是什麼?
2.如果這是一個好的解決方案;問題是CKernel需要包含IKernelTask,而IKernelTask需要包含CKernel。我曾嘗試過向前聲明,但遇到如下錯誤:C2027:使用未定義類型'CKernel'
我不認爲你像大多數程序員一樣使用「內核」這個詞。或者數學家的方式。事實上,你的意思是? – 2011-03-28 05:17:38
「爲什麼讓遊戲的一部分以內核模式運行?」是我想起來的第一個問題。我同意本,你最好解釋一下你的意思是「內核」。 – 2011-03-28 08:03:34
對不起,如果我使用「內核」是錯誤的。我現在已經學習了C++ 1.5個學期,並且在最近的1/2個學期中一直與遊戲引擎一起工作。我們已經學會了將「內核」用於我們之前所稱的「遊戲管理器」,即基本上運行遊戲的對象。這是我們正在做的一個練習的一部分,我們正在設計一個簡單的遊戲引擎,用於輸入,更新定時器,圖形,聲音和網絡等內核任務。 – NyanPrime 2011-03-28 15:40:16