1

概要:

単一のスレッドで実行するときに、単一のメソッドを重複して 2 回実行できるかどうかを調べようとしています。または、2 つの異なるメソッドをオーバーラップして実行できる場合、特定の変数へのアクセスを共有すると、望ましくない動作が発生する可能性があります。

単一のメソッドの例:

var ball:Date;

method1 ():Date {

    ball = new Date();

    <some code here>

    return ball;

}

質問:

1) イベント システムを使用して method1 が 20 ミリ秒ごとに起動され、メソッド全体の実行に 20 ミリ秒以上かかる場合、メソッドは重複して再度実行されますか?

2) シングル スレッド環境でメソッドをオーバーラップして実行できるシナリオは他にありますか?それとも、AVM2 は一度に 1 つのメソッドの実行に制限されていますか?

調査: https://www.adobe.com/content/dam/Adobe/en/devnet/actionscript/articles/avm2overview.pdfを読んだところ、AVM2 にはコードを実行するためのスタックがあり、その説明が記載されています。メソッドを使用すると、2 番目のスタックがない場合、スタック システムは一度に 1 つのメソッドしか実行できないように見えます。StackeOverflow の専門家に確認して確認したいと思います。

私は時間に敏感なデータを扱っており、メソッドが別のメソッドによって同時にアクセスされている変数を変更していないことを確認する必要があります。

4

1 に答える 1

2

ActionScript はシングルスレッドです。ただし、並行して実行される複数の SWF アプリケーションである ActionScript ワーカーを介して同時実行をサポートできます。

ネストされた関数または無名関数を関数のスコープ チェーン内で実行する場合は、非同期パターンがあります。

あなたが言及していると思うのは、AVM2がイベント駆動型コードを実行する方法であり、AVM2マーシャリングされたスライスを調査する必要があります。プレーヤー イベントは、スライスの先頭で実行されます。

整列化されたスライス

重いコードを実行すると、フレーム レートが遅くなります。

弾性競馬場

それは線形です - 同期的にブロックします。各フレームはコードを並行して呼び出しません。

AVM2 は 20 ミリ秒のマーシャリングされたスライスを実行し、フレーム レートに応じて、ユーザー アクション、無効化、およびレンダリングを実行します。

avm2-スライス

于 2015-10-09T05:04:55.027 に答える