2011-03-28 2 views
0

IKernelTask ​​및 파생 클래스가 있습니다 (입력, 사운드 ...에 대한 개별 커널 태스크 만들기) 또한 다른 커널 태스크를 실행하는 CKernel도 있습니다. CKernel에는 커널 태스크 목록을 실행하고 Update() 함수를 실행하는 Execute() 함수가 있습니다.커널 작업간에 데이터를 공유하는 방법은 무엇입니까? (커널/커널 태스크가있는 게임 엔진)

커널 작업간에 데이터를 전송할 때 어려움을 겪고 있으므로 커널 객체 참조를 Execute()로 보낸 다음 커널 작업에 동일한 방식으로 보내 커널로 데이터 전송을 시도하기로 결정했습니다. 업데이트().)

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

IKernelTask의 업데이트 (과 같이이다 :

CKernel 년대 (실행)이 너무 비슷 홈페이지에서

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'사용

+0

저는 대부분의 프로그래머들이 말하는 것처럼 "커널"이라는 단어를 사용하지 않는다고 생각합니다. 또는 수학자가하는 방법. 사실, 당신은 무엇을 의미합니까? –

+0

"왜 게임의 일부를 커널 모드로 실행하게합니까?" 내 마음에 첫 번째 질문이 튀어 나왔다. Ben과 동의합니다. "커널"이 의미하는 바를 더 잘 설명하십시오. –

+0

"kernel"을 잘못 사용하면 죄송합니다. 저는 C++을 1 1/2 학기 동안 공부했으며, 최신 1/2 학기 게임 엔진을 사용해 왔습니다. 우리는 이전에 "게임 관리자"라고 부른 것에 "커널"을 사용하는 법을 배웠습니다. 기본적으로 게임을 실행하는 객체입니다. 이것은 input, updateTimer, graphics, sound, network을위한 커널 태스크를 가진 간단한 게임 엔진을 작성하는 곳에서 우리가하고있는 일의 일부입니다. – NyanPrime

답변

0

CKernel 정의의 헤더 파일이 필요합니다.

관련 문제