Skip to content
uupaa edited this page Apr 26, 2016 · 10 revisions

ThreadProxy は WebWorker 上で動作するように設計されたクラスです。

API

new ThreadProxy

new ThreadProxy(...) は、ThreadProxy のインスタンスを返します。ThreadProxy クラスは WebWorkers で使用します。メインスレッドの中では使用できません。

function ThreadProxy(postMessageHandler,    // @arg Function - post message handler. postMessageHandler(args:Any, event:Event):void
                     closeRequestHandler) { // @arg Function - close request handler. closeRequestHandler(yes:Function, no:Function):void
}
  • postMessageHandler にはコールバックされる関数 function(args:Any, event:Event):void を指定します
    • この関数は Thread#post から呼ばれます
    • args には Thread#post から渡された args がそのまま格納されています
  • closeRequestHandler にはコールバックされる関数 function(yes:Function, no:Function):void を指定します
    • この関数は Thread#close から呼ばれます
    • 速やかに終了処理を行い yes() を実行すると、ワーカースレッドを安全に終了することができます
    • 即座に終了できない場合は no() を実行すると、終了要求を拒否できます。
    • 非同期処理を実行中などで終了できない場合は no() を実行し、安全に終了可能になったタイミングで ThreadProxy#close を実行し、自分自身を終了させてください
    • Thread#close で指定された timeout 時間を過ぎても yes() や no() が実行されない場合は、ワーカースレッドは強制終了されられます
var thread = new ThreadProxy(function postMessageHandler(args, event) {
    }, function closeRequestHandler(yes, no) {
        yes();
    });

ThreadProxy.prototype.post

ThreadProxy#post(...) は、メインスレッドにメッセージを送信します。

function ThreadProxy_post(args,       // @arg Any = null
                          transfer) { // @arg TransferableObjectArray = null - [ArrayBuffer, CanvasPorxy, MessagePort, ...]
}

ThreadProxy.prototype.close

ThreadProxy#close():void を行うとワーカースレッドを終了させる事ができます。

  • ワーカースレッド自身を終了させ、メインスレッドの closeMessageHandler(exitCode) コールバックします
    • exitCode は Thread.EXIT_OK になります

Close Thread by WorkerThread を参照してください。

Clone this wiki locally