一般的にJSはシングルスレッドでしか動作しないとされていますが、各ウィンドウ(各タブ)が独立したプロセスで動作しているブラウザの場合、ウィンドウごとのJSは並列で動作します。
それでいて、JSからはsame-origin ruleを満たす限りはウィンドウをまたいでデータを読み書きしたり関数を呼んだりできます。(つまりこの並列性はマルチスレッドに相当します)
マルチスレッドで動作することが可能でありながら、JSには排他制御の仕組みがありません。
さて、window.openで開いたウィンドウと元ウィンドウがプログラム的に連携動作しようという場合にスレッド競合状態を回避するためのノウハウにはどういったものがありますでしょうか。
window.open() だと同一プロセスでウィンドウが開くという記述を複数のブラウザについて見つけました。
しかしまだ、それが親子関係にあるウィンドウ間ではウィンドウをまたがってシングルスレッドを意味するのか、ブラウザ依存しない汎用的な仕様なのかはまだよくわかりません。
コメント(0件)