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:19
#2 tomita
- 2009/01/13 17:58:51
- 特集: 開発者のFirefox 3 (69件)
- ホワイトペーパー
- 企画特集
インターネット上の悪意を未然に防ぐには?
ストレージメディア特設サイト開設
パンデミック対策特集
◆エン・ジャパン厳選求人☆毎週更新◆
ロリポップ!がリニューアル
中小企業のセキュリティリスクとは?
仮想環境を実現するソリューション特集
ESBでIT投資の無駄を劇的に解消する
【徹底対談】運用管理ツールの賢い使い方
そのストレージで仮想化に対応できますか?
セキュリティ&ユーザ事例【SIer Club】
集積度も性能も、業界最高水準のブレードPC
今注目の「サジェスト検索」−デモ掲載中
御社のログ活用しませんか!?
SOA、BPM、SaaS −今、企業に必要なこと
- エンタープライズにおけるSUSEの強み
- サーバー監視・運用のコストを削減するには
- サービス・ドリヴン・データセンター
- ■ストレージ容量50%削減保証■
- 話題のタグ
Windows 7はLinuxへの切替が簡単:注目の仮想ディスクフォーマット「VHD」
iPhone OS 3.0で変わった「絵文字」
OSSのクラウド基盤「Eucalyptus」を使う(4)--インストール〜ノード構築
俳優経験者が指南する「人前で上手く話すためのティップス10選」
「うるまでるびペイント」登場:絵は上手下手ではなく制作過程に楽しみが
待てば回路の日和あり--「iPhone 3GS」発売、しかし――