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件)
- 今日のトップ記事
- 昨日
- 5日前
- 6日前
- 7日前
- ホワイトペーパー
- 話題のタグ
「Google Chrome」の拡張機能、開発者からのアップロード受付を開始
IMAPでGmailを受信、最も手っ取り早いのは?Windows 7、Ubuntu 9.10、Snow Leopardのメーラー比較
Snow LeopardではNTFSをサポート--その源流を訪ねる(2)
MS運営のオープンソース開発プロジェクト支援サイト「CodePlex」を探検する(2)
Snow LeopardではNTFSをサポート--その源流を訪ねる(1)
フォトレポート:「Windows Server 2008 R2」--あまり知られていない有用な機能10選
企業ITシステムの企画、構築、運用のイロハ
大丈夫?あなたの会社のセキュリティ対策
―エン・ジャパン厳選求人☆毎週更新―
高まるiSCSIストレージへの注目度
電力に"ふた"をする独自の省エネ機能とは!?
【最終警告】パンデミック対策特集
100万円で実現!中小企業の情報漏えい対策