2 つの関数で変更できる変数があるとします。1 つは定期的に呼び出されsetTimeout
、もう 1 つはイベント ハンドラーです。
var a = [];
function foo()
{
var x = a.pop();
// do something with x...
setTimeout(function(){ foo(); }, 1);
}
//...
someElement.addEventListener("keypress", function(e){ a.push("some value"); }, true);
このコードは安全ですか? イベントリスナーとfoo
実行は同じスレッドで実行されますか?それとも異なるスレッドで実行されますか? それらが異なるスレッドで実行される場合、javascript ランタイムはアクセスa
が同期されていることを保証する必要がありますか?