如何在内核任务之间共享数据? (带内核/内核任务的游戏引擎)

时间:2011-03-28 03:18:05

标签: c++

我有IKernelTask​​及其派生类(为输入,声音......制作单独的内核任务)另外我有CKernel运行不同的内核任务。 CKernel有一个函数Exec​​ute(),它运行一个内核任务列表并运行它们的Update()函数。

我在内核任务之间发送数据时遇到了困难,因此我决定尝试通过将内核对象的引用发送到Execute()然后以相同的方式向内核任务发送数据。更新()。

CKernel的Execute()就像这样:

Execute(CKernel &oKernel)  
For each kernel task:  
{  
    Update(oKernel);  
}  

IKernelTask​​的Update()就像这样:

Update(CKernel &oKernel)  
{
    // Each kernel task has an overridden Update() function
}

在主要方面:

while (running)  
{  
    oKernel.Execute(oKernel);  
}  

这将允许内核任务在内核任务之间转发数据,方法是让他们通过Update()函数访问内核。

然而
这是一个很好的解决方案吗?如果没有,那么分享数据的传统方式是什么? 2.如果这是一个好的解决方案;问题是CKernel需要包含IKernelTask​​,而IKernelTask​​需要包含CKernel。我已经尝试了前向声明,但是我得到的错误如:C2027:使用未定义类型'CKernel'

1 个答案:

答案 0 :(得分:0)

您需要#include带有CKernel定义的头文件。