2005年12月09日

JavaScript の非同期処理

 コンカレント処理を行った事のある人ならご存知の通り、複数の実行フローが同時に走る場合はリソースの競合が発生する可能性がある。
 あるリソース(メモリでもファイルでもIOでも何でも良い)に対して
1.値を取得する。
2.取得した値に1を足す。
3.足した結果を元に戻す。
と言う処理を行う時、初期値0で3つのプロセスが何の対策もせずにこれらを実行した場合は、最終的な結果として1〜3までのどんな値も取りえる事になる。こういう処理は往々にして何かの数を数える処理なので、この結果は期待通りであるとは言えない。これを期待通りに実行するためには、何らかのロック処理を行って、この一連の処理が同期的に実行される様にする必要がある。

 今まで JavaScript でこういうことを特に気にせず使ってきたが、JavaScript でも非同期処理を良く使う様になってきた。昔からある setInterval/setTimeout 系の定期実行処理、AJAX で使う XmlHttpRequest.onreadychange の処理、ボタンクリック時の処理等である。これらが複雑に組み合わさると、同期機構を持たない JavaScript では厄介な事態になりそうだ。

 しかし、本当にこれらが非同期に実行されるのかを調べて見る必要はあるだろう。かつての Windows の様に、誰かが制御を返さないかぎり他の実行フローは処理されないと言う(確か協調的マルチタスキングと呼んでいた様な...)、本当の擬似マルチタスクである可能性もあるからだ。
...続きを読む


posted by lepton at 16:42| 東京 ☀| Comment(0) | TrackBack(0) | JavaScript | このブログの読者になる | 更新情報をチェックする

ホームページの公開と更新

 いい加減、いつまで触っていても終わらないので、ホームページは公開する事にした。
公開といっても、Google や Yahoo にページを申請して、以前のページにリンクしてくれていた方々にリンク先の変更をお願いしただけだから、別にどうと言う事は無い。
 ここのページは、以前のページを参考に昔ながらの HTML で書いている。でもページを更新した場合に、一々あっちこっちにそれを書かなきゃならないのは面倒くさい。だからみんなブログの様なコンテンツ管理システムをつかっているんだけど、日付とカテゴリでしか分類できないのではあまり役にたたないし、ここに JavaScript だのサーバーサイドの動作例を載せる訳にもいかない。

 そうすると、ローカルの HTML からサーバーにコンテンツを更新させる時に、自動的に RSS ファイルを作って登録してくれる様なものがあれば、何とかなるんだろうと言う事は容易に想像がつく。こんなのは既にあちこちにありそうだから、そのうち探して使って見よう。

 現在公開しているページには、サーバー側に動的システムを置かない AJAX の話をいくつか書いているのだが、上記の様に運用して RSS ファイルをずっとためておけば、クライアント側でこれらの RSS を読み出して、自動的に What's New ページを表示する様なしかけも出来そうだ。そのうち作ってみる事にしよう。
posted by lepton at 01:54| 東京 ☀| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
プロフィール
名前:lepton
年齢:over 40
ウェブサイトURL:http://www.hmsoft.co.jp/lepton/
メールアドレス:contact@hmsoft.co.jp

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は180日以上新しい記事の投稿がないブログに表示されております。