0

そこで、flascc をダウンロードして、サンプルをいじりました。

サンプル 09 (スレッド) とサンプル 12 (stage3D) は、それ自体はうまく機能しましたが、Stage3D サンプルでスレッドを実行しようとすると、スレッドが開始されませんでした。

ここに私が持っているコードがあります main()

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 は決して実行されません。

このマニュアルページを見つけましたが、そこには何もないと思います。私は何が欠けていますか?

4

2 に答える 2

0

古いトピックですが、FlasCC(Crossbridge) とスレッドを詮索する人々のために明確にする必要があると思います。私の経験では、「pthread_join」(Adobe フォーラムにそれに関するフォーラム スレッドがあります) は、FlasCC 1.0.1 以降のすべてを単純にロックします (つまり、Crossbridge についても同じです)。まだ修正されていない理由はわかりませんが、これは非常に深刻な問題です。

FlasCC 1.0 でコンパイルすると、pthread_join は Flash をロックしません。

残りの質問については、よくわかりません。「pthread_join」の問題を参照しているだけです。

于 2014-01-30T22:36:10.190 に答える
0

チャンスがないため、スレッドは実行されません。それが開始されるまでに(ちなみに、これは信頼できません)、メインプログラムはすでに終了しています。

mainafterに次の行を追加しますpthread_create

 pthread_join(thread, NULL);

これは、main実行中のスレッドが終了する前に、スレッドが終了するのを待ちます。

実際の例を見る

于 2013-03-06T09:17:19.107 に答える