2013-03-06 2 views
0

그래서 flascc를 다운로드하고 샘플을 엉망으로 작성했습니다.Stage3D 및 pthreads

샘플 09 (스레드) 및 샘플 12 (스테이지 3D)는 그 자체로 잘 작동했지만 Stage3D 샘플에서 스레드를 실행하려고 시도했을 때 절대로 시작되지 않았습니다.

여기

pthread_t thread; 
printf("Start a thread"); 
int val = pthread_create(&thread, NULL, threadProc, NULL); 


// Setup the stage 
stage = internal::get_Stage(); 
stage->scaleMode = flash::display::StageScaleMode::NO_SCALE; 
stage->align = flash::display::StageAlign::TOP_LEFT; 
stage->frameRate = 60; 

// Ask for a Stage3D context to be created 
s3d = var(var(stage->stage3Ds)[0]); 
s3d->addEventListener(flash::events::Event::CONTEXT3D_CREATE, Function::_new(initContext3D, NULL)); 
s3d->addEventListener(flash::events::ErrorEvent::ERROR, Function::_new(context3DError, NULL)); 
s3d->requestContext3D(flash::display3D::Context3DRenderMode::AUTO, 
         flash::display3D::Context3DProfile::BASELINE_CONSTRAINED); 


// Suspend main() and return to the Flash runloop 
AS3_GoAsync(); 

주()

에 내가 가진 코드이고 여기

void *threadProc(void *arg) 
{ 
     printf("From a thread!"); 
} 

에 ThreadProc 결코 실행되지 도착하는 기능입니다.

this 매뉴얼 페이지를 찾았지만 아무 것도 없다고 생각합니다. 내가 뭘 놓치고 있니?

답변

0

스레드는 기회가 없으므로 실행되지 않습니다. 그것이 시작되면 (어떤 방법으로 당신이 의지 할 수없는) 메인 프로그램은 이미 끝났습니다.

pthread_createmain에 다음 줄을 추가합니다 :

pthread_join(thread, NULL); 

이는 main 실행이 완료되는 스레드를 허용하기 전에 완료 스레드에서 기다립니다.

live example

+0

죄송합니다. 답변은 아닙니다. 우선 main()은 AS3_GoAsync()로 인해 무한 루프가 될 것이므로 종료하지 않습니다. 또한 스레드를 결합하면 실행이 무기한 중단됩니다. 교착 상태일까요? 플래시 로그가 다음과 같이 인쇄됩니다. 오류 : 오류 # 1502 : 스크립트가 기본 제한 시간 인 15 초보다 오래 실행되었습니다. \t at flash.concurrent :: Condition/wait() \t at global/C_Run :: threadArbCondWait() – Habba

+1

@Habba 누구나 가서 샘플을 찾지 않을 것을 기대할 수 없습니다. 그 안에 모든 정보가 들어있는 질문을 게시하면 정답을 기대할 수 없습니다. –

+0

그러나 샘플을 모르는 경우에는 답변을 얻을 수 없습니다. 더 정확한 질문을 편집하겠습니다. – Habba

0

오래된 항목을 참조하십시오,하지만 난 FlasCC (Crossbridge)와 스레드 기웃 사람들을 위해 명확히해야한다고 생각. 내 경험에 따르면 "pthread_join"은 FlasCC 1.0.1의 모든 내용을 잠급니다 (예 : Crossbridge와 동일). 아직 해결되지 않은 이유는 모르겠지만 매우 심각한 문제입니다.

FlasCC 1.0으로 컴파일하면 pthread_join이 Flash를 잠그지 않습니다.

질문의 나머지 부분에 대해서는 확실하지 않습니다. 단지 "pthread_join"문제를 참조하십시오.