1

古いバージョンで pthreads を使用し、新しいバージョンで glib gthreads を使用する fluidsynth ライブラリを (エラーなしで) コンパイルすることができました。ただし、swf ではランタイム エラーが発生Undefined sym: _pthread_attr_initし、Undefined sym: _g_thread_initそれぞれ.

スレッドに関する限り、これは行き止まりですか、それともこれを機能させる方法はありますか? (または、最終的なリンク段階で何かをスキップしていますか?)

gthreads の場合、このドキュメントではカスタム スレッドの実装について言及しています。

スレッド システムは g_thread_init() で初期化されます。これは、オプションのカスタム スレッド実装またはデフォルト実装の NULL を取ります。

Alchemy がネイティブ スレッドをサポートしていないことは理解していますが、この目的で偽のグリーン スレッドの実装を使用することはできますか?

4

1 に答える 1

1

Flash Player はスレッド化されていないため、Alchemy C コードはスレッド化できません。ただし、Alchemy の「グリーン スレッド」を使用して回避できる場合があります。

AS3_FunctionAsyncを介して公開された関数を呼び出すと、flyieldが呼び出されるたびに関数自体が中断され、他のコードを実行できるようになり、「後で」再開されます。

AS3 コードが 2 つ以上の AS3_FunctionAsync でラップされた関数を同時に呼び出すことができなかった理由はないと思います。あなたのコードはスレッドセーフなので、おそらくうまくいくでしょう。うまく動作させるには、コード全体に flyields を配置する必要があることに注意してください (これは、古い OS の「協調マルチタスク」に非常によく似ています)。

とにかく一見の価値があります。

于 2011-07-26T15:44:33.537 に答える