最終更新:2013-03-12 (火) 00:22:27 (4055d)  

Web Workers
Top / Web Workers

JavaScript並列処理を実行

http://www.w3.org/TR/workers/

<!DOCTYPE HTML>
<html>
 <head>
  <title>Worker example: One-core computation</title>
 </head>
 <body>
  <p>The highest prime number discovered so far is: <output id="result"></output></p>
  <script>
   var worker = new Worker('worker.js');
   worker.onmessage = function (event) {
     document.getElementById('result').textContent = event.data;
   };
  </script>
 </body>
</html>

オブジェクト

Worker?

  • ワーカで実行させたいJavaScriptが書かれたファイルのURLをコンストラクタ引数に指定する
  • メインスレッドと同じオリジンにあるファイルしか読み込めない
    [Constructor(DOMString scriptURL)]
    interface Worker : EventTarget {
      void terminate();
    
      void postMessage(any message, optional sequence<Transferable> transfer);
      [TreatNonCallableAsNull] attribute Function? onmessage;
    };
    Worker implements AbstractWorker;

SharedWorker?

  • 複数のウィンドウで共通の一つのバックグラウンド処理を利用できる
    [Constructor(DOMString scriptURL, optional DOMString name)]
    interface SharedWorker : EventTarget {
      readonly attribute MessagePort port;
    };
    SharedWorker implements AbstractWorker;

スレッド間通信

チュートリアル

参考