問題タブ [race-condition]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
1291 参照

javascript - Javascriptでのビジーインジケーターの競合状態

次の(javascript / jquery)コードを使用して、画像の読み込み中にビジーインジケーター(遅延後)を表示します。

場合によっては、インジケーターが表示されたままになります。ブラウザのjavascriptエンジンがシングルスレッドの場合、これはどのように可能ですか?(ちなみに、これはFirefox 3にあります。)

注:これは、読み込まれている画像がすでにキャッシュされている場合に発生するようです。

別の注意:firebugコンソールにログインすると、imgUpdateのすべての行が実行されますが、onloadハンドラー内のログメッセージは、後続のimgUpdateの呼び出しで出力されません。

0 投票する
2 に答える
22107 参照

sql - SQL Server プロセス キューの競合状態

ストアド プロシージャを介して複数の注文プロセッサからアクセスされる注文キューがあります。各プロセッサは、独自の使用のために次の 20 の注文をロックするために使用される一意の ID を渡します。次にストアド プロシージャは、これらのレコードを注文プロセッサに返し、処理を行います。

複数のプロセッサが同じ「OrderTable」レコードを取得でき、その時点で同時に操作を試みる場合があります。これにより、最終的にはプロセスの後半でエラーがスローされます。

私の次の行動方針は、各プロセッサが利用可能なすべての注文を取得し、プロセッサをラウンドロビンすることですが、コードのこのセクションをスレッドセーフにして、プロセッサがいつでもレコードを取得できるようにすることを望んでいました.

明示的に-この競合状態が発生している理由と、問題を解決する方法を教えてください。

0 投票する
3 に答える
10669 参照

c - すべての X11 ウィンドウの完全なリストを取得して同期するにはどうすればよいですか?

X11 で開いているすべてのウィンドウを監視したい。現在、私は次のようにこれを行っています:

  1. 最初に、ルート ウィンドウから XQueryTree を再帰的に呼び出して、ツリー全体をウォークします。
  2. デスクトップ全体でサブ構造の変更をリッスンする:XSelectInput( display, root_window, SubstructureNotifyMask | PropertyChangeMask )
  3. すべての MapNotify、UnmapNotify、および DestroyNotify イベントを処理し、その過程で自分のウィンドウ リストを更新します

主に気になる点は1.再帰の際にXQueryTreeが複数回呼び出されることです。その間、ツリーが変更されないようにする方法はありますか? つまり、ある時点でツリー全体の「スナップショット」を取得するには?

また、一部の X11 システムでは、すべてのイベントが正しく到着しないことに気付きました。たとえば、デスクトップで新しいウィンドウを開くと、そのウィンドウの MapNotify が監視アプリケーションに届かないことがあります。どうすればいいの?届く前に捨てられる可能性はありますか?

アップデート:

ルート ウィンドウで X イベントを監視する小さなプログラムを作成しました (以下を参照)。このプログラムを実行し、xcalc を起動して終了すると、次の出力が得られます。

それでおしまい。実際のウィンドウ (0x4a0005b) が破棄されたことは通知されません。マッピングされていません!理由を教えてもらえますか?SubStructureNotifyMaskは、サブツリー全体ではなく直接サブウィンドウのイベントのみを送信しますか?

ちなみに、これは Compiz の実行中は発生しないようです。その後、再親化は行われません:

監視プログラムのソース:

0 投票する
6 に答える
21145 参照

python - ジャンゴの競合状態

競合状態になる可能性のある django ビューの簡単な例を次に示します。

競合状態は明らかです。ユーザーはこのリクエストを 2 回行うことができ、アプリケーションがuser = request.user同時に実行される可能性があり、リクエストの 1 つが他のリクエストをオーバーライドする可能性があります。

関数が比較的複雑で、1 つの関数に配置できず、ストアド プロシージャに配置するのが難しいcalculate_pointsあらゆる種類の奇妙なものに基づいて計算を行うとします。update

だからここに私の質問があります:これに似た状況に対処するために、djangoにはどのようなロックメカニズムが利用できますか?

0 投票する
3 に答える
650 参照

javascript - Javascript と DOM イベントの相互作用と考えられる競合状態

シナリオ: 画像のプリロード

  1. ajax クエリを実行する
  2. ロード画面を表示
  3. ajax クエリから結果を取得する
  4. dom に画像を挿入する
  5. 画像の読み込みが完了するまで待ちます
  6. ロード画面を隠す

私は次のことを考えていました:

ブラウザ DOM と JavaScript の相互作用についてはよくわかりません。DOM は、画像の読み込みを開始する前に JavaScript の実行が完了するのを待ちますか? 競合状態の可能性が心配です。

0 投票する
11 に答える
4846 参照

multithreading - 1つのアセンブラ命令は常にアトミックに実行されますか?

今日私はこの質問に出くわしました:

あなたはコードを持っています

worker2つの異なるスレッドから呼び出された場合counter、両方が終了した後、どのような値になりますか?

私は実際にそれが何でもあり得ることを知っています。しかし、私の内部の内臓は、それcounter++はおそらく単一のアセンブラー命令に変換され、両方のスレッドが同じコアで実行さcounterれる場合、20になると言っています。

しかし、これらのスレッドが異なるコアまたはプロセッサで実行されている場合、マイクロコードに競合状態が発生する可能性はありますか?1つのアセンブラ命令は常にアトミック操作と見なすことができますか?

0 投票する
4 に答える
1570 参照

javascript - 複数のAJAXリクエストによる競合状態

私の問題は次のとおりです。コンストラクターに新しいXMLHttpRequestオブジェクトを作成するクラスAJAXEngineを作成しました。このクラスには、応答Analyserというメソッドが含まれています。このメソッドは、XMLHttpRequestオブジェクトの「onreadystatechange」が変更されたときに呼び出されます。これで、AJAXEngineの4つのインスタンス=>4つのXMLHttpRequestオブジェクトを作成しました。

これで、AJAXEngineのインスタンスを保持する配列属性dataReqを持つ別のクラスDataRequesterができました。プログラム全体でDataReqeusterのインスタンスは1つだけです。DataRequesterには、callWhenFinishedという関数があります。この関数は、AJAXEngineの関数responseAnalyserによって呼び出され、DataRequesterインスタンスの変数をデクリメントします。

しかし、競合状態が発生すると思います。JavaScriptでそれらをどのように表現できますか?

0 投票する
3 に答える
148 参照

.net - 別のスレッドがメソッドを実行している間にオブジェクト参照を無効にする (.NET)

(私は .NET CLR に興味があります)

別のスレッドが元のオブジェクトでメソッドを実行しているときに、あるスレッドが変数が参照するオブジェクトを変更すると、正確には何が起こるでしょうか?

たとえば、型に typeFooの変数 'Bar' があり、クラス レベルの状態がないBarとしBarます (少なくとも今のところ、このシナリオは単純にしたいと思います)。

とりあえず、これが実行を終える前に…

スレッド 1 で実行されている (だった?) メソッドはどうなりますか? 完了する必要があるものはすべてスタック上にありますか?

スレッド2が代わりにこれを行うと、状況は変わりますか?

0 投票する
3 に答える
218 参照

c++ - SVNからのBoostWaveの更新

使用しているブーストコンポーネントの1つにいくつかのバグがあります。問題を少し分析したところ、私だけではないことがわかりました。作成者は、ブーストSVNトランクで利用可能な修正プログラムをすでに発行しています。

このコンポーネントだけを更新して、すでに構築されているライブラリを再利用したい場合、最善のアプローチは何でしょうか。コンポーネントはヘッダーのみではありません。

  • コンパイラ:SP1、TR1を搭載したMSVC 9
  • OS:Vista
  • Boost:BoostProコンピューティングから1.39
  • バギーコンポーネント:ブーストウェーブ
  • バグ:競合状態。バグは今年5月に修正されましたが、私が知る限り、どのリリースにも含まれていません。

私がこれまでにしたこと:

  • ウェーブサブディレクトリのsvnチェックアウト
  • ローカルサブディレクトリを置き換えました
  • 今、私は波だけを構築したいことを指定する方法を探しています

Boostlib全体を再構築するのに少しうんざりしています。現在、トランクが本番環境に対応しているかどうかはわかりません。

0 投票する
7 に答える
299 参照

sql - 誰かが私のウェブサイトにまったく同時に2つの同じアカウントを作成しました。どうしてそれは可能ですか?

私はこれを信じることができません-誰かが私のソーシャルネットワーキングウェブサイトで同じ電子メールを使用して実際に2つのアカウントを作成しましたが、サーバー側とクライアント側の両方の検証チェックがあり、そのようなことが起こらないようにしています。ただし、両方のアカウントの作成で記録された時刻がまったく同じ時刻になるようにしてください。

何らかの理由で、これがフォームや任意のインターフェイスを使用して可能であるかどうかは疑問ですが、これがどのように発生したのかを知りたいと思っています。誰かここに何かアイデアがありますか?