著者
牧 大介 岩崎 英哉
出版者
一般社団法人情報処理学会
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.48, no.12, pp.1-18, 2007-08-15
参考文献数
15

Ajax は Web 開発の世界で普及したが、一方で Ajax 開発が従来の Web 開発に比べて非常に困難であることがよく知られている。その理由として、Ajax 開発においては複雑な非同期処理を 1 つのスレッドの上にすべて記述しなければならない点、JavaScript では非同期通信をイベント駆動型でしか記述できないため、制御フローの記述が困難である点があげられる。上の問題を解決するため、本論文では JavaScript のマルチスレッドライブラリを提案する。提供するライブラリの特徴としては、(1) 代表的な複数の Web ブラウザで可搬性があること、(2) プリエンプティブなスレッド切替えが可能であること、(3) オブジェクト指向で API を提供すること、がある。提案機構では、マルチスレッド・スタイルで記述された JavaScript プログラムを継続ベースの並行処理を応用して既存の処理系で実行可能な JavaScript プログラムへと変換し、この変換済みプログラムを実行時ライブラリであるスレッド・スケジューラの上で並行実行する。そして実際に Ajax アプリケーションを記述することで、提案機構の有効性を確かめた。提案機構にはオーバヘッドがあるが、Ajax アプリケーションにおける通信遅延に比べると十分に小さいため、実用上は大きな問題にはならないと考えられる。Although Ajax is widely used in the development of Web applications, it is well known that Ajax development is much more difficult than traditional Web development. There are two reasons: (1) Ajax developers have to write complex asynchronous program on a single thread; (2) asynchronous communication on JavaScript can be programmed only in event driven style, which causes control-flow difficulty. To resolve this problem, we provide multithread library to JavaScript programmers. The proposed library has the following features: (1) it is portable among popular Web browsers; (2) it provides preemptive scheduling; (3) it provides object-oriented API. The proposed system converts JavaScript programs written in multithreaded-style into those in continuation-based style that are executable on existing systems, and then executes them concurrently on a runtime-library called thread-scheduler. To see the effectiveness of the library, we implemented an Ajax application using the library. The overhead of the converted programs is not a serious problem in practice because the overhead is smaller enough than communication delay of Ajax applications.

言及状況

Delicious (1 users, 1 posts)

[javascript] CPS変換 Concurrent.Thread

はてなブックマーク (2 users, 2 posts)

Twitter (1 users, 1 posts, 0 favorites)

2007年のAjaxのマルチスレッド化の論文エモいな… 詳しくないけど、今だとWeb workerとかservice workerとかでfetch動かす感じだろうか https://t.co/ZuBsOxRkZQ

収集済み URL リスト