Backup of blog/2010-05-11 (1) Back


Back to History list

#navi(../)
*JavaScriptでマルチスレッド? [#m354f091]
Workerオブジェクトでマルチスレッドが実装できるらしい。
 var worker = new Worker("worker.js");
しかし、Webプログラムにおける、マルチスレッドってなんだろう?PHPにしろ、Perlにしろ、処理が始まって、ページが表示された時点で処理は終わるので、あまり恩恵がない気がするが・・・。言い換えると、Webプログラムの世界は、ディスクトップで言う、アプリケーションを開いたあと、ブラウザにページが表示された時点で、終了する世界なのだ。むしろ求められているのは、公いった処理をキャッシュで実行出来るようにするという事なのではないだろうか?

そもそも、マルチスレッドでやるという発想をWebプログラムに組み込むとどういう風になるのだろうか?バックグラウンドでやるような処理はcron使うし・・・。

Workerオブジェクトに話を戻そう。

これはDOMにアクセス出来ないと言う問題があるらしい。つまり、Dijitなり、jQuery UIなりでリッチフォームを生成する処理と同時進行で、そのフォームにバリデーターをイベントリスナで組み込むというような事はできないらしい。DOM処理はJavaScriptにおいての根幹じゃないだろうか?

と、翌々考えてみれば結構メリットあるかもしれない。Mabinogi Assistを作るために作った[[ローカルファイルを操作するフレームワーク>JavaScript/io.js]]と、[[Iniファイル操作フレームワーク>JavaScript/ini.js]]、特に、[[JavaScriptでGZip圧縮>http://logue.be/web/gzip/]]なんかすごいかもしれない。

が、しかし!

IEでは使えないらしい・・・。しかし、Google先生を侮ってはいけない。[[Google:worker js ie]]で検索すると、作ってる人はいるものである。
http://code.google.com/p/ie-web-worker/source/browse/trunk/worker.js

しかし、ソースを見る限り、ajaxでスクリプトを読み込んで<head>タグ内に貼りつけてるだけのような。これじゃあ、[[Lorelei.require>http://code.google.com/p/lorelei/source/browse/trunk/webroot/js/lorelei/require.js]]と同じじゃんか・・・。