ているミューテックスが必要でjavascript?
-
02-07-2019 - |
質問
私はこのリンク: 実施の相互排除JavaScript.一方で、私が読んだありませんのスレッドjavascriptのかもしれないことを意味するのか。
時のイベントの発生が、コードで割り込み?
とがない場合にスレッドJS使ったらよいでしミューテックスでJSはありませんか?
具体的には、私に与える影響についての機能を利用で呼ばれてい setTimeout()
や XmlHttpRequest
's onreadystatechange
on世界でアクセス。
解決
当サイトでは、以下のブラウザとして定義されて 再入可能な 言語を意味がないスレッドは、ユーザに公開されているスレッドは実装によって異なる。機能 setTimeout()
と非同期型コールバックを待つことも必要ですが、スクリプトエンジンの眠りの前に彼らができます。
ということも起こっているイベントを受ける前に次のイベントが実施されます。
もっとも、必要とする場合もありまミューテックスの場合コードは何が期待で値を変更しないときに非同期イベントがトリガされたときの時にコールバックが行われようとしていました。
たとえば、お持ちのデータ構造がリンクをクリックしボタンで送信しXmlHttpRequestを呼びかけコールバックの変化のデータ構造の方は、別のボタンに変化するのと同じデータ構造を直接間のイベントがトリガされたときに呼び返しに実行したユーザがクリックして、最新のデータ構造以前のコールバックできるそうです。
をすることができ、レース状態のようですのを防ぐため、コードでそれぞれの機能を原子.これは多くの労力がかかり奇符号化のパターンを、レースの条件が加わることになった。
他のヒント
の回答は少し時代遅れが正しいものを与えました。やまだ正しい場合に見る、クライアントサイドjavascriptアプリケーションを使用しないwebworkers.
記事をウェブ労働者:
multithreading javascriptを使用webworkers
Mozillaにwebworkers
ていることがわかるjavascriptのソフトウェ労働者multithreading力です。どに関する設問にはミューテックスが必要でjavascript?私の美しく雄大なぢ大自然に包ます。このstackoverflowポストのように関して
相互排除のためのN非同期のスレッド
として@ウィリアム-ポートが指摘するように、
必要とする場合もありまミューテックスの場合コードな場所であると期待しています 値を変更しないときに非同期イベントがトリガされたときは、 時のコールバックが行われようとしていました。
この節の一層の場合、コードは何かが見込まれること専用の制御リソースまでの非同期要求を解決する必要がある場、ミューテックス.
簡単な例は、あなたのエンターテインメント火災ajax通話を記録に戻す。必要がある場合があります少しのコードから身を守るためのガユーザーをクリックすかを創造することで、複数の記録です。あのアプローチからこの問題など無効のボタンを可能とするajaxのsuccess).このまま使用簡易ロック
var save_lock = false;
$('#save_button').click(function(){
if(!save_lock){
//lock
save_lock=true;
$.ajax({
success:function()
//unlock
save_lock = false;
}
});
}
}
くなった場合の最良のアプローチとうどその他の取扱相互排除javascriptが、どう意識がシンプルなミューテックスです。
当サイトでは、以下のブラウザの一部...もChromeで新しい獣のかも単一のネジ切り加工各タブにはJavaScriptのスレッド...しんのみで詳細な見積もりくにあります。
しかし、ひとつ必要はありません。心配はどのようなJavaScriptの取り扱複数のajaxご要望にあらためてないのと同じ順序で送信します。なので、すべての必要な情報である心配が必要ajax通話を取り扱うなステップにeachother足の場合、結果トラヴァースシティでおすすめ順は異なることがよりお送りいただいたします。
このタイムアウトです。
時JavaScriptがmultithreading、その後も安心のミューテックスのように....
あり、ミューテックスできる必要Javascriptの場合、アクセス資源を共有するとタブ/windows、 localStorage.
例えば、ユーザーはタブを開き、シンプルは次のようなコードは安全でない:
function appendToList(item) {
var list = localStorage["myKey"];
if (list) {
list += "," + item;
}
else {
list = item;
}
localStorage["myKey"] = list;
}
時間のlocalStorage項目は'か'および'設定'他のタブが変更できます。一般的には難ができますかの判断のために自分自身の可能性とリスクに関連する競合に、特定の状況です。
以下の論文をより詳細:
イベントを示唆すが、JavaScriptの実行が一部です。
私の理解では、その時のイベントはナのエンジンを停止しその実行の行イベントハンドラです。後にハンドラが完了したら、スクリプトの実行を再開します。場合はイベントハンドラの変更の一部を共有変数がその後再びコードが見えますこれらの変化に現れる"の".
したい場合は"保護"共有データ、簡単なbooleanフラグを差し障りありません。
JavaScriptでは、 言語, できとして下記からダウンロードできますが、ブラウザの埋め込みのjavascriptエンジンならではのひとつでコールバック(onload,onfocus, <script>, etc...) at a time (per tab, presumably).ウィリアムのご提案の利用、ミューテックスの変化の間に登録を受けるコールバックなもの、文字通りこまないブロック間のコールバックからのコールバックが解除でブロックをすることの背後に現在のコールバック!(なんと、英語を吸い込みを話すためのスレッド.) この場合、きっという、redispatchingによって、現在のイベントの場合、フラグを設定すると、文字通りは、setTimeout().
ご利用の場合は別の組み込みJS、執行を行う複数のスレッドを一度に得で少diceyくはJSで利用コールバックで簡単にロック類を中心とした物件のアクセスの明示的なロックがほぼなどが必要です。しかし、私は驚いた場合には埋め込み設計のための総合コード(例えば、ゲームスクリプティングを用いたマルチスレッドさんも一般的にはプリミティブロックします。
また、壁面のテキスト!