2011-07-22 11 views
1

私は以前のバージョンではpthreadsを使用し、新しいバージョンではglib gthreadsを使用するfluidsynthライブラリを(エラーなしに)コンパイルすることができました。しかし、swfでは、それぞれランタイムエラーUndefined sym: _pthread_attr_initUndefined sym: _g_thread_initを取得します。Adob​​e Alchemyスレッドのサポート

スレッディングが行われる限り、このデッドエンドですか、それともこの方法を作る方法がありますか? (または私は、最終的なリンクフェーズで何かをスキップしています?)

をgthreadsの場合は、カスタムスレッドの実装言及this doc

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

私はアルケミーがネイティブスレッドをサポートしていないことを理解していますが、この目的のためにいくつかの擬似グリーンスレッド実装を使用できますか?

答えて

1

Flash Playerはスレッド化されていないため、Alchemy Cコードはスレッド化できません。しかし、Alchemyの 'green threading'を使って回避することができます。

AS3_FunctionAsyncで公開されている関数を呼び出すと、flyieldが呼び出されるたびに一時停止し、他のコードを実行してから「後で」再開します。

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

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