我有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