Firefox 3.1に追加されるWeb Workersとは
Firefox 3.1に追加される予定の新機能の中に「Web Workers」あるいは「Web Worker Threads」と呼ばれるものがある。今回はこの新機能について紹介しよう。
JavaScriptでマルチスレッドプログラミング
「Web Workers」(ドキュメントによっては「Web Worker Threads」や「DOM Workers」と記述されている)は、一言で言ってしまえばJavaScriptにおいてマルチスレッド・プログラミングを可能にするもので、HTML 5と同じくWHATWGによって仕様の策定が進められている。仕様自体がドラフト段階だが、Firefoxでは3.1から標準となる新しいJavaScriptエンジン「TraceMonkey」において実装される予定で、基本機能はBeta 2ですでに利用可能となっている。なお、WHATWGによるドラフト仕様はこのサイトで見ることができるが、現時点でのFirefox 3.1による実装はこの仕様とは若干異なるので注意が必要。
基本となるのはWorkerというオブジェクトで、このオブジェクトのコンストラクタにJavaScriptのURLを渡すことで、渡されたスクリプトがメインのスクリプトとは別のスレッドで実行されるようになる。例えば「myworker.js」というファイルに実行したいスクリプトが記述されている場合、リスト1のようにすることでWorkerオブジェクトが生成され、スクリプトの処理が別スレッドで実行される。
リスト1 Workerオブジェクトの生成
var worker = new Worker('myworker.js');
Workerオブジェクトには以下のメソッドとイベントリスナが定義されている。
- postMessage()メソッド - Workerスレッドに対してメッセージを送る
- onmessageリスナ - Workerスレッドからメッセージが送られた際に発生するmessageイベントを受け取る
- onerrorリスナ - エラーが発生した場合に通知されるerrorイベントを受け取る
postMessage()には文字列のみ渡すことができる。そこでオブジェクトのデータを渡したい場合にはJSONなどを利用する。逆に、Workerスレッドからメッセージが送られた場合にはmessageイベントが発生するため、onmessageリスナを定義することでこれを受け取ることができる。メッセージはイベントオブジェクトのdataプロパティに格納されている。
次回はWorkerスレッド側の処理について解説する。
- コメント(2件)
#1 anonymous
- 2009/01/13 17:46
#2 tomita
- 2009/01/13 17:58
- 特集: 開発者のFirefox 3 (69件)
- ホワイトペーパー
- 話題のタグ
グーグル、JavaScriptプログラミングツールをリリース
Windowsの歴史 Windows Server 2008編:同じカーネルを持つ「Vista」とは対照的に早くから支持を得たサーバOS
Windowsの歴史 Windows Server 2003 R2編:安定性と先進性の両立目指す「R2」の先駆けとなったOS
最大32個のセンサーが電力を徹底管理!
進むストレージ環境の見直し
―エン・ジャパン厳選求人☆毎週更新―
大丈夫?あなたの会社のセキュリティ対策
企業ITシステムの企画、構築、運用のイロハ
【最終警告】パンデミック対策特集
100万円で実現!中小企業の情報漏えい対策